2013-04-22 161 views
0

我有一個MainWindow.cpp類,顯示多個圖像,發出clicked()信號。一旦點擊了,我想打開一個在MainWindow內部具有固定大小的小部件,並且我希望這個小部件能夠被拖動,只要它保持在MainWindow類中。Draggable QWidget

我正在查看示例代碼來嘗試編寫此小部件類,特別是Qt MainWindow Example。但是,一旦在顯示屏上拖動了其中一個嵌入窗口,操作系統特定的標題欄(可讓您最大化,最小化和關閉窗口)會顯示出來。我不希望顯示這個標題欄。

我該如何去創建這類可拖動小部件?

+0

閱讀此:http://stackoverflow.com/questions/11172420/moving-object-with-mouse/ – hank 2013-04-22 08:00:45

回答

0

檢查setTitleBarWidget

設置爲一個空白窗口小部件將工作:

It is not possible to remove a title bar from a dock widget. 
However, a similar effect can be achieved by setting a default constructed QWidget 
as the title bar widget. 

編輯: 通過要求:

yourDockableWidget->setTitleBarWidget(new QWidget(yourDockableWidget)); 

在這個例子中你之後,你能做到這一點的構造函數:

ColorSwatch::ColorSwatch(const QString &colorName, QWidget *parent, Qt::WindowFlags flags) 
: QDockWidget(parent, flags) 
{ 
/*...*/ 

setTitleBarWidget(new QWidget(this)); 

/*...*/ 
} 

現在你的小部件不會有SO標題欄時,

+0

您可以擴展您的帖子的第二部分? – DomX23 2013-04-22 13:16:46

+0

從Qt文檔鏈接看起來非常簡單,但是完成了。 – Trompa 2013-04-22 14:33:18

+0

編輯添加父對QWidget,所以它會破壞自己當paretn – Trompa 2013-04-22 15:38:52