在 Qt 中设置 QMainWindow 的大小
以上几种方法都可以实现将 QMainWindow 的大小设置为用户桌面大小的 70%,可以根据具体的 Qt 版本和需求选择合适的方案。
·
问题描述
一位 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 版本和需求选择合适的方案。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)