首页 > 解决方案 > 如何使 QDockWidgets 成为单独的窗口?

问题描述

我有一个带有 some 的 Qt 应用程序QDockWidgets,它可以通过以下功能停靠和取消停靠:

我想使用 Windows 的窗口布局管理器(比如使用停靠小部件和主应用程序的分屏)。但现在不可能,因为停靠的小部件仍然是主应用程序的子窗口。

我可以设置一个标志来使它们成为单独的窗口吗?

标签: pythonpyqtpyqt5qdockwidget

解决方案


标志 Qt::WindowFlagsflags Qt::WindowFlags - Qt::Window

表示该小部件是一个窗口,通常带有一个窗口系统框架和一个标题栏,而不管该小部件是否有父级。请注意,如果小部件没有父级,则无法取消设置此标志。

import sys
from PyQt5.QtCore    import *
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *

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

        self.setWindowTitle("Dock demo")
        self.setCentralWidget(QTextEdit())

        items      = QDockWidget("Dockable", self, flags=Qt.Window)  # flags=Qt.Window
#        items.setGeometry(650, 130, 300, 200)
        items.show()                                                 # +++

        listWidget = QListWidget()
        listWidget.addItem("item1")
        listWidget.addItem("item2")
        listWidget.addItem("item3")
        items.setWidget(listWidget)
        items.setFloating(False)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Dockdemo()
    ex.show()
    sys.exit(app.exec_())

在此处输入图像描述


推荐阅读