PyQt不希望无模式对话框始终位于顶部

2024-05-29 04:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个创建无模式对话框的主窗口。这很好,但是对话框总是在主窗口前面。即使我回到主窗口并使用它来集中它,对话框始终保持在顶部。我无法将主窗口滑动到对话框顶部。在

我将主窗口的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和python2.7)

谢谢。在


Tags: inselfinitmainmy模式windowclass
2条回答

FromQDialog Class Reference:“对话框总是一个顶级小部件,但是如果它有一个父部件,它的默认位置是在父部件的顶层部件的顶部居中(如果它本身不是顶级部件)。它还将共享父级的任务栏条目。“

您可以尝试使用QWidget。在

我最后使用了下面的方法,它似乎有效,但不确定它是否是最好的方法。而不是使用:

def __init__(self, parent):
    super(BeaconDialog, self).__init__(parent)

我用过:

^{pr2}$

因此不会使对话框成为主窗口的子窗口。(出于其他原因,我还是把主窗口作为参数传递给了全班)

但是,为了正确关闭对话框,我不得不重载主窗口的closeEvent()并用以下命令关闭对话框:

def closeEvnet(self):
    if (self.beacon_dlg) : self.beacon_dlg.reject()

相关问题 更多 >

    热门问题