设置和获得QDialog维度的奇怪行为

时间:2016-04-20 21:34:47

标签: c++ qt

我正试图将我的QDialog集中在一起。

这是我使用的代码:

QRect screenGeometry = QApplication::desktop()->screenGeometry();
int x = (screenGeometry.width() - this->width()) / 2;
int y = (screenGeometry.height() - this->height()) / 2;
this->move(x, y);

但是我没有在适当的位置得到我的对话。当我打印对话框宽度和高度的值时,我注意到它们比实际的小得多。为了检查某些东西是否以错误的方式工作,我改变了它的几何形状:

this->setGeometry(100,100,this->width(),this>height());

我的对话缩小了......

有人能告诉我发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

QRect screenGeometry = QApplication::desktop()->screenGeometry();
QRect windowRect = rect();

首先获取您自己的窗口副本。

windowRect.moveCenter(screenGeometry.center());

将副本移动到屏幕的中心位置。

move(windowRect.topLeft());

执行实际移动:将窗口左上角点设置为计算出的左上角点。不需要调整大小。