Qt:如何创建一个不最小化且不阻塞后台GUI的窗口
Posted
技术标签:
【中文标题】Qt:如何创建一个不最小化且不阻塞后台GUI的窗口【英文标题】:Qt:How to create a Window that does not minimize and do not block background GUI 【发布时间】:2013-04-10 18:48:14 【问题描述】:我有一个QMainWindow
,它是另一个窗口的孩子。当用户单击父窗口中的任意位置时,我不希望子窗口最小化。子窗口应该失去焦点,用户应该能够继续在父窗口上工作。
此功能类似于 libreoffice/excel/openoffice 等中的查找/替换对话框,如下所示。我们可以看到任务栏只显示了父应用程序窗口,而子窗口在任务栏中是不可见的。
QMainWindow
上是否有任何信号可以帮助我实现这一目标?或者最好的方法是什么?
【问题讨论】:
【参考方案1】:如果您以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_())
【讨论】:
以上是关于Qt:如何创建一个不最小化且不阻塞后台GUI的窗口的主要内容,如果未能解决你的问题,请参考以下文章