问:如何创建一个不会最小化并且不阻止后台GUI的窗口

vin*_*yan 1 qt pyqt qmainwindow

我有一个QMainWindow孩子到另一个窗口.当用户单击父窗口中的任何位置时,我不希望子窗口最小化.子窗口应该失去焦点,用户应该能够继续在父窗口上工作.

此功能类似于libreoffice/excel/openoffice等中的查找/替换对话框,如下所示.我们可以看到任务栏只显示父应用程序窗口,并且子窗口在任务栏中不可见.

在此输入图像描述

是否有任何信号QMainWindow可以帮助我实现这一目标?或者最好的方法是什么?

Ava*_*ris 6

如果你打开新窗口Dialog并给它一个父窗口,它应该保持在父窗口之上.由于您正在使用QMainWindow,您可以使用构造函数传递它.如果您决定使用QDialog,请确保使其无模式setModal(False).否则会阻止父母.

一个小例子:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)

        w = QtGui.QWidget()
        layout = QtGui.QVBoxLayout(w)
        self.button = QtGui.QPushButton('Open Dialog')
        self.text = QtGui.QTextEdit()

        layout.addWidget(self.button)
        layout.addWidget(self.text)

        self.setCentralWidget(w)

        self.button.clicked.connect(self.openDialog)

    def openDialog(self):
        self.dialog = QtGui.QMainWindow(self, QtCore.Qt.Dialog)
        self.dialog.show()

app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)