2013-04-22 55 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