首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用最小化/最大化窗口控件显示Qt.Tool窗口?

如何使用最小化/最大化窗口控件显示Qt.Tool窗口?
EN

Stack Overflow用户
提问于 2016-07-08 07:51:11
回答 1查看 981关注 0票数 1

我有。

代码语言:javascript
复制
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类中,但没有成功(工具窗口仍然没有显示最大化/最小化窗口控件):

代码语言:javascript
复制
self.setWindowFlags(self.windowFlags() |
                    QtCore.Qt.WindowSystemMenuHint |
                    QtCore.Qt.WindowMinMaxButtonsHint)

是否可以将这些控件添加到工具窗口?

或者,我可以创建一个非模式窗口,但它总是位于父应用程序的顶部,并且显示最大化/最小化窗口控件?

请注意,我不希望这个工具窗口停留在我的系统上的所有窗口之上。我只想让它永远掌握在我的申请上。

EN

回答 1

Stack Overflow用户

发布于 2016-07-08 20:56:03

您应该能够在没有任何标志的情况下使用QMainWindow类。只要工具窗口是主应用程序窗口的子窗口,它就会保持在它的顶部(但不是来自其他应用程序的窗口,就像设置“窗口停留在顶部”标志一样)。

您需要更改__init__以接受父参数

代码语言:javascript
复制
def __init__(self, parent):
    super(ToolWindow, self).__init__(parent)

如果您有多个工具Windows,并且希望它们按特定顺序保持在顶部,则可以调用my_tool_window.raise_()将其带到z级的顶部。

Qt附带一个窗口标志示例。您可能需要检查这一点,以查看不同的标志对窗口显示和行为的影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38261526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档