Qt - 拖动标题栏时防止窗口调整大小

时间:2018-03-11 15:49:46

标签: c++ windows qt user-interface qt5

我希望我的窗口始终最大化。我尝试设置:

setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);
(...)
showMaximized();
setMinimumSize(QSize(width(), height()));
setFixedSize(QSize(width(), height()));

因此窗口最大化打开,但我仍然可以单击其标题栏并将其向下拖动。这样做时Windows(10)将窗口从最大化状态调整为正常。

如何为我的窗口禁用此行为?

3 个答案:

答案 0 :(得分:0)

我认为最大化窗口的概念维护可拖动窗口的效率较低。相反,将窗口几何设置为最大屏幕尺寸,然后您可以根据需要拖动而无需系统调整窗口大小。 要做到这一点,您需要一个QDesktopWidget的实例,它提供屏幕的几何信息,如完整的拉伸宽度/高度。然后将您的窗口大小设置为使用这些信息进行修复。 在Mainwindow .cpp中添加以下内容:

QDesktopWidget* myscreen = QApplication::desktop();
int width = myscreen->width();
int height = myscreen->height();
this->setFixedSize(width, height);
ui->setupUi(this);

... ...

修改 窗口仍然可以完全陷入困境,你仍然可以使用w.showMaximized();,窗口不会在拖动时掉落。

答案 1 :(得分:0)

由于Windows始终会响应用户点击并拖动标题栏,因此您可以考虑使用Qt::FramelessWindowHint。然后根据需要使用您自己的最小化和关闭按钮在窗口顶部绘制您自己的虚拟标题栏作为矩形。您还需要绘制自己的边框矩形。

答案 2 :(得分:0)

使用MSWindowsFixedSizeDialogHint标志。

setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);