自定义QDialog窃取全屏应用程序焦点并显示任务栏

时间:2011-10-20 18:59:40

标签: python qt pyqt 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 个答案:

答案 0 :(得分:1)

我认为你遇到的问题是你没有给你的msgBox父母。这使得Qt将其视为顶级窗口。尝试更改消息框的实例化,如下所示:

msgBox = QMessageBox(self)