Как сделать QDockWidgets отдельными окнами? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть приложение Qt с некоторым количеством QDockWidgets, которое можно прикрепить и отстыковать с помощью следующих функций:

  • DockWidgetFloatable
  • DockWidgetMovable
  • DockWidgetVerticalTitleBar
  • DockWidgetClosable

Я хотел бы использовать диспетчер расположения окон Windows (например, использование разделенного экрана закрепленных виджетов и основного приложения). Но сейчас это невозможно, потому что прикрепленные виджеты все еще являются дочерними окнами основного приложения.

Можно ли установить флаг, чтобы сделать их отдельными окнами?

1 Ответ

0 голосов
/ 21 октября 2019

flags 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_())

enter image description here

...