【PyQt5】QToolBar中添加QSpacerItem的解决
问题
现在需要在工具栏(QToolBar)中加入一些组件如输入框(QLineEdit)、按钮(QPushButton)等,并将这些组件置于最左侧,即设想在toolbar右侧加一个spacer将所有组件压到左侧,但是遇到问题:QToolBar没有addItem方法或用AddWidget方法时QSpacerItem不属于QWidget
解决
由于QToolBar只能使用addWidget方法,因此可以自定义一个QWidget来实现QSpacerItem的效果,即将QWidget的SizePolicy设置为Expanding
from PyQt5.QtWidgets import QToolBar, QLineEdit, QWidget, QSizePolicy
# 定义一个工具栏
toolbar = QToolBar()
# 添加一个输入框
line_edit = QLineEdit()
toolbar.addWidget(line_edit)
# 一般组件较多时放到一个QWidget中会更美观
# from PyQt5.QrWidgets import QHBoxLayout
# layout = QHBoxLayout()
# line_edit = QLineEdit()
# layout.addWidget(line_edit)
# button = QPushButton()
# layout.addWidget(button)
# widget = QWidget()
# widget.setLayout(layout)
# toolbar.addWidget(widget)
# 自定义一个QWidget作为QSpacerItem
widget_spacer = QWidget()
widget_spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
toolbar.addWidget(widget_spacer)
补充
QToolBar常用方法:
| 方法 | 描述 |
|---|---|
| addAction() | 添加文字或图标的工具按钮 |
| addSeperator() | 添加分组分隔线 |
| addWidget() | 添加一般控件 |
| setMovale() | 设置工具栏可移动 |
| setOrientation() | 设置工具栏方向(横向Qt.Horizontal或纵向Qt.vertical) |
| clear() | 清空工具栏 |
作者:盛夏光年ltk
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主是利用学习、参考、实践、复制和粘贴等多种方式打造成自己的文章,如有帮助记得点赞!

浙公网安备 33010602011771号