[英]Qt - Prevent window resize when dragging title bar
我希望窗口始終處於最大化狀態。 我嘗試設置:
setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);
(...)
showMaximized();
setMinimumSize(QSize(width(), height()));
setFixedSize(QSize(width(), height()));
因此,窗口已最大化打開,但我仍然可以單擊其標題欄並將其向下拖動。 這樣做時,Windows(10)會將窗口的大小從最大化狀態調整為正常狀態。
如何為我的窗口禁用此行為?
我認為最大化窗口的概念在維護可拖動窗口方面效率較低。 而是將窗口幾何設置為最大屏幕尺寸,然后可以根據需要拖動而無需系統調整窗口大小。 為此,您需要一個QDesktopWidget
實例,該實例提供屏幕的幾何信息,例如完整的拉伸寬度/高度。 然后只需設置您的窗口大小即可使用這些信息進行固定。 在您的Mainwindow .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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.