【问题标题】:Add multiple docked widgets添加多个停靠的小部件
【发布时间】:2018-01-27 16:07:18
【问题描述】:

我尝试添加多个标签式 QDockWidgets,但不知何故我只能同时停靠。

mwe代码:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class DockWindow(QDockWidget):
    def __init__(self, parent, name):
        super().__init__(parent)

        parent.addDockWidget(Qt.TopDockWidgetArea, self)
        self.setWindowTitle(name)
        child = parent.findChildren(DockWindow)

        if len(child) > 1:
            parent.tabifyDockWidget(self, child[0])
            self.raise_()


app = QApplication(sys.argv)
main = QMainWindow()

for i in range(10):
    DockWindow(main, str(i))


main.show()
sys.exit(qApp.exec_())

【问题讨论】:

    标签: python python-3.x pyqt qt5 pyqt5


    【解决方案1】:

    根据docs

    void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * 第二)

    将第二个停靠小部件移动到第一个停靠小部件的顶部,创建一个 主窗口中的选项卡式停靠区域。

    从第一个参数中得出的结论必须是初始QDockWidget,如果有child[0],第二个是新的QDockWidget,在你的情况下是self。问题通过改变解决:

    parent.tabifyDockWidget(self, child[0])
    

    到:

    parent.tabifyDockWidget(child[0], self)
    

    截图:

    【讨论】:

    • 我犯了一个愚蠢的错误。感谢您的澄清
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 2022-08-17
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2018-08-14
    相关资源
    最近更新 更多