Qt:设置QMainWindow的大小

36

我刚接触Qt,想知道是否有一种方法可以将QMainWindow的大小设置为用户桌面大小的70%(例如)。
我尝试了拉伸因子,但它没有起作用。QWidget::setFixedSize 可以使用像素进行设置,但我认为只能使用该方式。


1
请查看此链接:https://dev59.com/2VjUa4cB1Zd3GeqPTqsE然后你可以计算出其的70%。 - Amir eas
阿米尔,请继续发布为答案。 - UmNyobe
好的,它起作用了,我已经编辑了我的问题并附上了我的代码 ;) - dadod2
@dado2:你能否写一个回答来回答你自己的问题,而不是修改你的问题?这将尊重StackOverflow鼓励的问答风格。 - ereOn
我已经编辑了问题以改善语法和格式。此外,我已将解决方案作为答案添加到了这个问题中。如果有任何问题,请评论,这样我就可以删除我的答案,让@dadod2或Amir eas在这里写他的答案。 - zeFree
4个回答

51
在您的QMainWindow构造函数中,执行以下操作: resize(QDesktopWidget().availableGeometry(this).size() * 0.7); 这将把窗口大小调整为可用屏幕空间的70%。请注意保留HTML标记格式。

这应该是正确的答案,谢谢!但我仍然想知道为什么在QT中需要如此神秘,而不能像resize(640, 480)这样简单地做。 - Timo Ernst
1
@Timo:当然,你也可以这样做。但是想法是根据可用屏幕分辨率自动调整窗口大小。 - muesli

36

感谢 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);

5
这对于多显示器设置不会很好用 :\ 有什么想法吗? - chwi
4
@WilhelmsenпјҡдҪ еҸҜд»ҘеғҸиҝҷдёӘй—®йўҳзҡ„зӯ”жЎҲдёҖж ·дҪҝз”ЁQDesktopWidget :: primaryScreen()пјҢй“ҫжҺҘеҰӮдёӢпјҡhttps://dev59.com/questions/6mMm5IYBdhLWcg3wFLw4 - vsz
请注意,使用此方法会导致用户无法调整窗口大小。请参阅下面的答案以获取更好的解决方案。 - Leogout

5

您可以使用QDesktopWidget中的availableGeometry(QWidget*)方法,它可以为您提供当前小部件所在屏幕的几何形状。例如:

QRect screenSize = desktop.availableGeometry(this);
this->setFixedSize(QSize(screenSize.width * 0.7f, screenSize.height * 0.7f));

这里的this是指MainWindow指针。 当使用多个屏幕时,这将起作用。


1

针对Qt6,更新@muesli的回答,QDesktopWidget在Qt5中被弃用,在Qt6中已被删除。

新的等效代码是:

resize(QGuiApplication::primaryScreen()->availableGeometry().size() * 0.7);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接