PyQt4中心对话框窗口的最佳方法是什么?

Mar*_*rko 5 qt4 pyqt4 window-position python-2.7

当我.show()对话时它通常会向左侧显示一点,我不知道为什么.我想把所有打开的对话框放在中心,所以我用过:

qr = dlgNew.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
dlgNew.move(qr.topLeft())
Run Code Online (Sandbox Code Playgroud)

并且:

sG = QtGui.QApplication.desktop().screenGeometry()
x = (sG.width()-dlgMain.width()) / 2
y = (sG.height()-dlgMain.height()) / 2

dlgMain.move(x,y)
dlgMain.show()
Run Code Online (Sandbox Code Playgroud)

我的问题是,哪种是正确/更好的使用方式,有什么区别?

Ava*_*ris 6

如果您没有明确指定位置,Qt将让操作系统的窗口管理器决定放置窗口的位置.在您的情况下,"向左一点"是您的窗口管理员决定的.

至于这两种方法,存在一些差异.

首先,.availableGeometry()vs .screenGeometry()..screenGeometry()为您提供整个屏幕矩形.其中.availableGeometry(),返回可用的矩形.这是排除某些永久组件(如Windows中的任务栏)的区域.(文件解释差异)

第二,.frameGeometry()vs width()/height()..frameGeometry()返回窗口占据屏幕的总面积.在另一方面,width()/height()返回widthheight 内部不包括窗框,标题条等的窗口(文档说明的差异)

考虑到这些,我会说第一种方法更合适.