問題描述
一位 Qt 新手提問,是否有辦法將 QMainWindow 的大小設置為用戶桌面大小的 70%。他嘗試過使用伸縮因子,但未成功。QWidget::setFixedSize 可以工作,但只能使用像素值。
解決方案
方案一:使用 QDesktopWidget
在 QMainWindow 的構造函數中,可以這樣設置窗口大小:
resize(QDesktopWidget().availableGeometry(this).size() * 0.7);
此代碼會將窗口大小調整為可用屏幕空間的 70%。
方案二:使用 QDesktopWidget 獲取屏幕尺寸
感謝 Amir eas 的提示,可以通過以下代碼來實現:
#include <QDesktopWidget>
#include <QMainWindow>QDesktopWidget dw;
MainWindow w;int x = dw.width() * 0.7;
int y = dw.height() * 0.7;
w.setFixedSize(x, y);
這個方法可能在多顯示器設置下效果不好。
方案三:使用 availableGeometry 方法
使用 QDesktopWidget 的 availableGeometry(QWidget*) 方法,可以獲取當前窗口所在屏幕的幾何尺寸,例如:
QRect screenSize = desktop.availableGeometry(this);
this->setFixedSize(QSize(screenSize.width() * 0.7, screenSize.height() * 0.7));
其中,this
是指向 MainWindow 的指針。這個方法在使用多個屏幕時也能正常工作。
方案四:適用于 Qt6 的新方法
在 Qt6 中,QDesktopWidget 已經被棄用,可以使用以下代碼:
resize(QGuiApplication::primaryScreen()->availableGeometry().size() * 0.7);
這個方法同樣將窗口大小調整為主屏幕可用空間的 70%。
總結
以上幾種方法都可以實現將 QMainWindow 的大小設置為用戶桌面大小的 70%,可以根據具體的 Qt 版本和需求選擇合適的方案。