📅  最后修改于: 2023-12-03 15:33:53.226000             🧑  作者: Mango
在 PyQt5 中,QDockWidget 是一个带有标题栏的容器小部件,它可以嵌入到 QMainWindow 中。默认情况下,标题栏在左侧,但是我们可以使用 setTitleBarWidget() 方法来指定另一个 QWidget 作为标题栏。
本文介绍如何将标题栏垂直放置,而不是默认的水平放置。
要将标题栏垂直放置,我们需要做以下步骤:
from PyQt5.QtWidgets import QMainWindow, QDockWidget, QWidget, QVBoxLayout
dock = QDockWidget("Dock Widget")
widget = QWidget()
layout = QVBoxLayout()
title_bar = QWidget()
content = QWidget()
layout.addWidget(title_bar)
layout.addWidget(content)
widget.setLayout(layout)
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 的标题栏,从而实现垂直或水平标题栏的设置。