Draggable QWidget

Draggable QWidget

本文关键字:QWidget Draggable      更新时间:2023-10-16

我有一个MainWindow.cpp类,显示多个图像,发出一个clicked()信号。一旦点击,我想在MainWindow中打开一个固定大小的小部件,我希望这个小部件能够被拖拽,只要它停留在MainWindow类中。

我正在查看示例代码,试图编写这个小部件类,特别是Qt主窗口示例。然而,一旦其中一个dockwindow被拖拽到显示器上,操作系统特定的标题栏(它允许您最大化、最小化和关闭窗口)就会显示出来。我不希望显示这个标题栏。

我该如何创建这类可拖动的小部件?

查看setTitleBarWidget

设置为void小部件可以工作:

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标题栏;