6

ダイアログを.show()表示すると、通常は少し左に表示されますが、その理由がわかりません。開いているすべてのダイアログを中央に配置したかったので、次を使用しました。

qr = dlgNew.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
dlgNew.move(qr.topLeft())

また:

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

dlgMain.move(x,y)
dlgMain.show()

私の質問は、どちらが適切な/より良い使用方法で、違いは何ですか?

4

2 に答える 2

7

位置を明示的に指定しない場合、Qt は OS のウィンドウ マネージャーにウィンドウの配置場所を決定させます。あなたの場合、「少し左」がウィンドウマネージャーの決定です。

2 つのアプローチに関しては、いくつかの違いがあります。

まず、.availableGeometry().screenGeometry().screenGeometry()画面の四角形全体が表示されます。asは、使用可能な四角形.availableGeometry()を返します。これは、Windows のタスクバーなどの特定の永続的なコンポーネントが除外される領域です。(違いを説明するドキュメント)

第二に、.frameGeometry()width()/height().frameGeometry()ウィンドウが画面上で占める総面積を返します。一方、ウィンドウ フレーム、タイトル バーなどを除くウィンドウのandをwidth()/height()返します(違いを説明するドキュメント) 。widthheight

これらを念頭に置いて、最初のアプローチがより適切であると思います。

于 2012-09-14T22:53:48.833 に答える