如何设置QMainWindow的frameSize?
为了解释我正在尝试做什么,我需要满足的要求是我的程序主窗口的高度等于屏幕高度减去任务栏;但宽度应远小于现代宽屏显示器的屏幕宽度,所以我不能只是最大化窗口。
我可以找到屏幕高度减去任务栏QApplication::desktop()->availableGeometry()
没问题。但是,使用此值在窗口上调用resize
不起作用;据我所知,resize
使得内部占据一定的空间,而不是使外部适合某个空间。文档似乎表明相关窗口属性为frameSize
,但没有提供设置它的直接方法。我可能会在resize
和frameSize
之间做一些试验和错误反馈,但有更优雅/惯用的方法吗?
答案 0 :(得分:6)
这并不复杂。有关一个漂亮的图表,请参见here。您可以使用frameGeometry()
和geometry()
来获取帧宽(水平和垂直),然后在调用resize()
(或setFixedSize()
之前,您可以从所需的帧大小中减去这些宽度。如果那更适合你)。
唯一可能出错的方法是框架宽度是否因调整大小而改变。让我知道它是否有效!