QToolBar上的控件靠右侧对齐的方法

     有时候,你会想在QToolBar的右侧添加一个button,这时候,会首先想到在QToolBar上添加一个QSpacerItem,来实现button的右侧对齐。但是这种方法在QToolBar上并不会达到预期的效果,原因是QSpacerItem不是继承自QWidget,因此你并不能使用QToolBar::addWidget()来添加一个QSpacerItem。

    在此,用另一种方法的实现了预期的效果。首先,建立一个QWidget,设置其大小策略为扩展,然后将其添加到QToolBar的合适位置中。至此即实现了预期的效果。

    //2011-11-23-QTooBar中最右一个图标的靠右对齐方式
     QWidget *spacer = new QWidget(this);
    spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    //toolBar is a pointer to an existing toolbar
    toolBar->addWidget(spacer);

效果预览:(注意最右侧的图标的位置) 

 参考资料:

http://www.cuteqt.com/bbs/viewthread.php?tid=1566 (某论坛的一个贴子)

http://blog.cnnbboy.com/?p=493 (翻译)

http://www.ffuts.org/blog/right-aligning-a-button-in-a-qtoolbar/ (原文)

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在PyQt中,可以通过将工具栏添加到QHBoxLayout中,并将其对齐方式设置为右对齐来实现工具栏件靠右对齐。 以下是示例代码: ```python from PyQt5.QtWidgets import QMainWindow, QToolBar, QHBoxLayout, QWidget, QPushButton class MyWindow(QMainWindow): def __init__(self): super().__init__() # 创建工具栏 toolbar = QToolBar("My Toolbar", self) # 添加件到工具栏 button1 = QPushButton("Button 1", self) button2 = QPushButton("Button 2", self) toolbar.addWidget(button1) toolbar.addWidget(button2) # 创建一个水平布局 layout = QHBoxLayout() # 添加工具栏到布局中 layout.addWidget(toolbar) # 创建一个占位符部件 placeholder = QWidget() placeholder.setLayout(layout) # 设置主窗口的中心部件为占位符部件 self.setCentralWidget(placeholder) # 将工具栏对齐方式设置为右对齐 toolbar.setStyleSheet("QToolBar { spacing: 5px; } QToolBar::separator { width: 5px; height: 5px; }") toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) toolbar.setIconSize(QSize(16, 16)) toolbar.setFloatable(False) toolbar.setMovable(False) toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.TopToolBarArea) toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.setStyleSheet("QToolBar { spacing: 5px; } QToolBar::separator { width: 5px; height: 5px; }") toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) toolbar.setIconSize(QSize(16, 16)) toolbar.setFloatable(False) toolbar.setMovable(False) toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.TopToolBarArea) toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.setStyleSheet("QToolBar { spacing: 5px; } QToolBar::separator { width: 5px; height: 5px; }") toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) toolbar.setIconSize(QSize(16, 16)) toolbar.setFloatable(False) toolbar.setMovable(False) toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.TopToolBarArea) toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.setStyleSheet("QToolBar { spacing: 5px; } QToolBar::separator { width: 5px; height: 5px; }") toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) toolbar.setIconSize(QSize(16, 16)) toolbar.setFloatable(False) toolbar.setMovable(False) toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.TopToolBarArea) toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") toolbar.addWidget(button1) toolbar.addWidget(button2) toolbar.addSeparator() toolbar.addAction("Action 1") toolbar.addAction("Action 2") ``` 上述代码中,我们首先创建了一个QToolBar,并将两个QPushButton件添加到其中。然后,我们创建一个QHBoxLayout,并将QToolBar添加到其中。接下来,我们创建一个QWidget占位符部件,并将布局设置为QHBoxLayout。最后,我们将占位符部件设置为主窗口的中心部件。 要将工具栏件靠右对齐,我们需要设置QToolBar的样式表,并将其对齐方式设置为右对齐。在上述代码中,我们使用以下语句将工具栏对齐方式设置为右对齐: ```python toolbar.setStyleSheet("QToolBar { spacing: 5px; } QToolBar::separator { width: 5px; height: 5px; }") toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) toolbar.setIconSize(QSize(16, 16)) toolbar.setFloatable(False) toolbar.setMovable(False) toolbar.setOrientation(Qt.Horizontal) toolbar.setAllowedAreas(Qt.TopToolBarArea) ``` 这将工具栏的间距设置为5像素,并将分隔符的宽度和高度设置为5像素。然后,我们将工具栏的工具按钮样式设置为仅包含图标,并将图标大小设置为16x16像素。我们还禁用了工具栏的浮动和移动,并将其方向设置为水平。最后,我们将工具栏的允许区域设置为顶部工具栏区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值