我有......
class ToolWindow(QtWidgets.QMainWindow):
"""Generic window to be used as non-modal tool
Usage:
tool_win = ToolWindow()
layout = QtWidgets.QHBoxLayout()
button = QtWidgets.QPushButton('hello')
layout.addWidget(button)
tool_win.setup(layout)
button.released.connect(lambda: print('hello'))
tool_win.show()
"""
def __init__(self):
super(ToolWindow, self).__init__()
def setup(self, layout,
window_title='Untitled', object_name=None, tool=True):
"""Setup tool window"""
if tool:
self.setWindowFlags(QtCore.Qt.Tool)
self.widget = QtWidgets.QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)
self.setWindowTitle(window_title)
def closeEvent(self, event):
"""Delete object when closed"""
self.deleteLater()
但是,我希望在窗口中添加典型的最大化和最小化窗口控件。我试图将以下内容添加到ToolWindow类但没有成功(工具窗口仍然没有显示最大化/最小化窗口控件):
self.setWindowFlags(self.windowFlags() |
QtCore.Qt.WindowSystemMenuHint |
QtCore.Qt.WindowMinMaxButtonsHint)
是否可以将这些控件添加到工具窗口中?
或者,我可以创建一个非模态窗口,但它始终位于我的父应用程序的顶部,并显示最大化/最小化窗口控件吗?
请注意,我不希望此工具窗口停留在我系统上的所有窗口之上。我只希望它始终保持在我的应用程序之上。
答案 0 :(得分:0)
您应该能够在没有任何标志的情况下使用QMainWindow
类。只要工具窗口是主应用程序窗口的子窗口,它就会保持在它的顶部(但不是来自其他应用程序的窗口,就像你设置" Window Stays一样在顶部"标志)。
您需要更改__init__
以接受父参数
def __init__(self, parent):
super(ToolWindow, self).__init__(parent)
如果您有多个工具Windows ,并且希望它们按特定顺序保持最佳状态,则可以调用my_tool_window.raise_()
将其置于z顺序的顶部。< / p>
Qt附带window flags example。您可能需要检查一下,看看不同的标志如何影响窗口显示和行为。