我试图从系统托盘菜单(QtGui.QMenu)中的选项打开QDialog。但我原来的班级' Mensageiro'是从QtGui.QSystemTrayIcon派生的,因此在创建QDialog实例时出现异常:
TypeError: 'PySide.QtGui.QDialog' called with wrong argument types:
PySide.QtGui.QDialog(Mensageiro)
Supported signatures:
PySide.QtGui.QDialog(PySide.QtGui.QWidget = None, PySide.QtCore.Qt.WindowFlags = 0)
我该怎么做才能打开对话框?我不希望它成为无父母。
答案 0 :(得分:0)
解决方案实际上非常简单。即使系统托盘应用程序也需要QWidget作为其父级。父窗口小部件仍然隐藏。因此,我将QDialog创建为同一父窗口小部件的子项:
self.dialog = dialogos.DialogExemplo(self.parent)
当我使用“退出”选项关闭托盘应用程序时,将执行以下代码:
self.application.setQuitOnLastWindowClosed(True)
# Hide the tray icon before it is destroyed
self.hide()
# Close the parent widget, killing all open windows.
self.parent.close()