2011-10-20 61 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

相關問題