簡體   English   中英

Qt-拖動標題欄時防止調整窗口大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM