📜  PyQt5 QDockWidget – 设置垂直标题栏(1)

📅  最后修改于: 2023-12-03 15:33:53.226000             🧑  作者: Mango

PyQt5 QDockWidget – 设置垂直标题栏

在 PyQt5 中,QDockWidget 是一个带有标题栏的容器小部件,它可以嵌入到 QMainWindow 中。默认情况下,标题栏在左侧,但是我们可以使用 setTitleBarWidget() 方法来指定另一个 QWidget 作为标题栏。

本文介绍如何将标题栏垂直放置,而不是默认的水平放置。

实现思路

要将标题栏垂直放置,我们需要做以下步骤:

  1. 创建一个垂直布局 QVBoxLayout。
  2. 将标题栏(一个 QWidget)和 QDockWidget 内容(也是一个 QWidget)添加到 QVBoxLayout 中。
  3. 将 QVBoxLayout 设置为 QDockWidget 的标题栏。
代码实现
1. 导入必要的库
from PyQt5.QtWidgets import QMainWindow, QDockWidget, QWidget, QVBoxLayout
2. 创建 QDockWidget 和 QWidget
dock = QDockWidget("Dock Widget")
widget = QWidget()
3. 创建 QVBoxLayout,将标题栏和内容添加到其中
layout = QVBoxLayout()
title_bar = QWidget()
content = QWidget()
layout.addWidget(title_bar)
layout.addWidget(content)
widget.setLayout(layout)
4. 设置 QDockWidget 的标题栏为 QVBoxLayout
dock.setTitleBarWidget(widget)
完整代码
from PyQt5.QtWidgets import QMainWindow, QDockWidget, QWidget, QVBoxLayout

class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()

        # 创建 QDockWidget 和 QWidget
        dock = QDockWidget("Dock Widget")
        widget = QWidget()

        # 创建 QVBoxLayout,将标题栏和内容添加到其中
        layout = QVBoxLayout()
        title_bar = QWidget()
        content = QWidget()
        layout.addWidget(title_bar)
        layout.addWidget(content)
        widget.setLayout(layout)

        # 设置 QDockWidget 的标题栏为 QVBoxLayout
        dock.setTitleBarWidget(widget)

        # 设置 QMainWindow 内容
        self.setCentralWidget(QWidget())
        self.addDockWidget(1, dock)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
结论

使用 setTitlteBarWidget() 方法,可以方便地将 QWidget 设置为 QDockWidget 的标题栏,从而实现垂直或水平标题栏的设置。