如何在屏幕上居中Qt主变形?

Dav*_*son 7 qt qt4 qt4.6

我在mainform的构造函数中尝试过这些:

QRect desktopRect = QApplication::desktop()->availableGeometry(this);
move(desktopRect.center() - frameGeometry().center());

QRect desktopRect = QApplication::desktop()->availableGeometry(this);
move(desktopRect.center() - rect().center());
Run Code Online (Sandbox Code Playgroud)

但是两者都将表格的右下角放在屏幕的中心附近,而不是将表格居中.有任何想法吗?

Kal*_*son 12

我在mainform的构造函数中尝试过这些

这可能就是问题所在.此时您可能没有有效的几何信息,因为该对象不可见.

当对象首次构建时,它基本上定位于(0,0)它的预期(width,height),如下:

frame geometry at construction:  QRect(0,0 639x479) 
Run Code Online (Sandbox Code Playgroud)

但是,在显示之后:

frame geometry rect:  QRect(476,337 968x507) 
Run Code Online (Sandbox Code Playgroud)

因此,您还不能依赖您的frameGeometry()信息.

编辑:说到这一点,我认为你可以根据需要轻松移动它,但为了完整性我在Patrice的代码中放弃,而不依赖于框架几何信息:

QRect desktopRect = QApplication::desktop()->availableGeometry(this);
QPoint center = desktopRect.center();

move(center.x() - width() * 0.5, center.y() - height() * 0.5);
Run Code Online (Sandbox Code Playgroud)