2011-10-20 93 views
2

私は自分のボタンでカスタムQDialogメッセージボックスを作成する方法を知りました。カスタムQDialogが全画面アプリケーションのフォーカスを盗み出し、タスクバーを表示

これまでのところ、私はこのコードを持っていますが、これはかなりうまく動作します。このコードの問題は、フルスクリーンアプリケーションから起動し、そのフォーカスを盗むことです(上部のメインタスクバーがQDialogオブジェクトとともに表示されます)。バックグラウンドでフルスクリーンアプリケーションとシームレスに連携したいので、ボタンをクリックしてこのメ​​ッセージボックスを表示すると、トップにタスクバーが表示されません。私はPyQt4とPython 2.7.2でUbuntu 11.10で作業しています。

btnOne = QPushButton("One", self) 
btnTwo = QPushButton("Two", self) 
btnOne.clicked.connect(self.workForOne) 
btnTwo.clicked.connect(self.workForTwo) 
msgBox = QMessageBox() 
msgBox.setText("<center>This is a custom question!</center>") 
msgBox.setWindowTitle("Question") 
msgBox.setWindowModality(Qt.ApplicationModal) 
msgBox.addButton(btnOne, QMessageBox.ActionRole) 
msgBox.addButton(btnTwo, QMessageBox.ActionRole) 
msgBox.addButton(QMessageBox.Cancel) 
msgBox.exec_() 

答えて

1

私は問題があると思うのは、あなたの親としてmsgBoxを与えていないということです。これにより、Qtはトップレベルのウィンドウとして扱います。メッセージボックスのインスタンシエーションを次のように変更してみてください。

msgBox = QMessageBox(self) 
+0

これを試しましたが、まだUbuntuタスクバーが最上部に表示されています。位置合わせはまた、画面の中心からほぼ中央上部に変化する。親に与えるときに画面の中央に手動で調整する方法はありますか?それとも親の位置合わせを継承しますか? – 12hys

+0

実際、これはUbuntu 11.04でこの問題を修正していますが、なぜこの問題は11.10で引き続き起こります。 – 12hys

+0

gnome2/3/unityの違いかもしれません... – Chris

関連する問題