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



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

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

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

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

我认为最大化窗口的概念对于维护可拖动窗口的效率较低。相反,将窗口几何形状设置为最大屏幕尺寸,然后您可以根据需要拖动,而无需系统调整窗口大小。为此,您需要一个QDesktopWidget实例,该实例提供屏幕的几何信息,例如完整的拉伸宽度/高度。然后只需将窗口大小设置为使用这些信息固定即可。在主窗口中.cpp添加以下内容:

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

。...

编辑窗口仍然可以完全狗狗,您仍然可以使用w.showMaximized();并且窗口在拖动时不会降低其大小。

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

使用 MSWindowsFixedSizeDialogHint 标志。

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

最新更新