为什么QWidget正在改变我设置的几何体

时间:2014-09-01 07:01:02

标签: c++ qt

我有以下代码:

QWidget w(nullptr, Qt::Tool | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint);
w.setGeometry(9, 60, 475, 223);
w.show();
auto rect = w.geometry();

变量rect与我设置(9, 60, 475, 223)的值相同,但在我的桌面上显示窗口之前,我得到一个moveEvent(QMoveEvent *event),其中y坐标获得的功能相同geometry() 1}}成为88

正如你所看到的那样,这个窗口没有父级(实际上我认为在这种情况下我的桌面是它的父母,无论如何我觉得它是无关紧要的)我正在使用geometry()函数和不是frameGeometry()。对于frameGeometry,由于窗口标题栏,我希望坐标不同。

我的问题是:为什么会这样?这28(88-60)值来自哪里?我可以认为它不变吗?

我尝试了什么: w.setSizePolicy(QSizePolicy::Policy::MinimumExpanding,QSizePolicy::Policy::Mini‌​mumExpanding);但没有任何改变 w.move(QPoint) w.resize(QSize);没有结果 我设置了一个按钮,然后单击我重置几何w.setGeometry(9, 60, 475, 223);,窗口重新定位在所需的坐标处(不再是+28位移)

修改
问题2:这28(88-60)值从何而来? 答案:我发现这28个像素实际上是统一顶栏的高度
问题3:我可以认为它不变吗?  答案:否。此尺寸可由用户修改。这实际上就是我找到这个值的方式。

剩余问题:为什么会发生这种情况?为什么这只是针对第一次setGeometry()通话而不是每次通话(阅读我尝试过的最后一件事)?

0 个答案:

没有答案