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

C++ Qt-防止在拖动标题栏时调整窗口大小,c++,windows,qt,user-interface,qt5,C++,Windows,Qt,User Interface,Qt5,我希望我的窗口总是最大化。我尝试设置: setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint); (...) showMaximized(); setMinimumSize(QSize(width(), height())); setFixedSize(QSize(width(), height())); 因此,窗口被最大化打开,但我仍然可以单击其标题栏并将其向下拖动。当这样做时

我希望我的窗口总是最大化。我尝试设置:

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.showmimized()窗口不会拖动它的大小。

< P>因为Windows总是响应用户点击和拖动标题栏,您可以考虑<代码> QT::FrAMELLINKWINDOWINT/<代码>。然后在窗口顶部用自己的最小化和关闭按钮将自己的人造标题栏绘制为矩形。您还需要绘制自己的边框矩形。

使用
MSWindowsFixedSizeDialogHint
标志

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

谢谢,但这更像是一种变通办法,而不是解决方案。也许这不是那么多的工作,但仍然是一个额外的工作要做的事情,应该很容易。我宁愿保留原来的Windows吧。Windows不是这样工作的。。。您可能需要通过
winID
获取HWND,并在其上设置一些属性。今晚我会调查的……我看你已经得到了一个公认的答案。但一定要检查我的另一个答案是否有意义(即
mswindowsFixedSizeDialogInt
标志)。据我所知,
mswindowsFixedSizeDialogInt
会通过拖动小部件的边缘来禁用大小调整,因此设置此标志时不会看到大小调整箭头。嗯,几乎是这样。如果我使用你的代码,我的窗口将不会停靠,因为它应该在最大化状态。但是,如果我使用
setMinimumSize()
而不是
setFixedSize()
,那么它(几乎)可以按照我的要求工作。理想情况下,我想禁用拖动窗口的可能性(因此它总是最大化),但保持其大小不变是足够好的解决方案。是的,我知道它不会100%停靠。。侧边留有一个小的边距。顺便说一下,你仍然可以显示你的窗口最大化,它不会在拖动时调整大小