我有一个主窗口,可以创建无模式对话框。这很好用,但对话框总是在主窗口的前面。即使我回到主窗口并使用它来聚焦,对话框仍然保持在最顶层。我无法在对话框顶部滑动主窗口。
我将主窗口的self作为对话框的父级传递。
#In my main window
self.beacon_dlg = dialog_beacon.BeaconDialog(self)
#In the dialog class
class BeaconDialog(QDialog, ui_dialog_beacon.Ui_Dlg_beacon_soh):
def __init__(self, parent):
super(BeaconDialog, self).__init__(parent)
self.setupUi(self)
知道如何让主窗口位于对话框前面,并在主窗口关闭时仍然关闭对话框(父控件)?
(我在Windows上使用PyQt 4.10和Python 2.7)
感谢。
答案 0 :(得分:1)
我最终使用以下内容似乎有效,但不确定它是否是最好的方法。而不是使用:
def __init__(self, parent):
super(BeaconDialog, self).__init__(parent)
我用过:
def __init__(self, parent):
super(BeaconDialog, self).__init__()
因此不会使对话框成为主窗口的子对象。 (由于其他原因,我仍然通过主窗口作为课程的参数)
然而,为了正确关闭对话框,我不得不重载主窗口的closeEvent()并自己关闭对话框:
def closeEvnet(self):
if (self.beacon_dlg) : self.beacon_dlg.reject()