【问题标题】:Qt: How to add two widgets (say QPushButton) to the status bar, one to the left and other to the right side?Qt:如何在状态栏中添加两个小部件(比如 QPushButton),一个在左侧,另一个在右侧?
【发布时间】:2014-09-09 13:46:10
【问题描述】:

我想在状态栏中添加两个小部件(例如QPushButton),一个在左侧,另一个在右侧。

我正在考虑在两个小部件之间添加水平间隔,但不知道如何添加。

PS:我尝试使用addWidget() 添加到左侧,使用addPermanentWidget() 添加到右侧,但看起来不整齐,感觉也不对。

【问题讨论】:

  • 您的具体要求是什么?请更清楚地解释它。 (示例可能有帮助)
  • 我想在状态栏上添加两个按钮,一个在左侧,另一个在右侧,以便它们与各自的左右边框具有相同的间距。换句话说,一个按钮应该左对齐,另一个应该右对齐。

标签: c++ qt layout statusbar


【解决方案1】:

您可以在一个小部件的布局中添加两个按钮,并使用QStatusBar::addWidget 将小部件添加到状态栏:

QWidget * widget = new QWidget();
QPushButton  * leftBut = new QPushButton("Left");
QPushButton  * rightBut = new QPushButton("Right");
QGridLayout * layout = new QGridLayout(widget);
layout->addWidget(leftBut,0,0,1,1,Qt::AlignVCenter | Qt::AlignLeft);
layout->addWidget(rightBut,0,1,1,1,Qt::AlignVCenter | Qt::AlignRight);
ui->statusBar->addWidget(widget,1);

【讨论】:

【解决方案2】:

我正在考虑在两个小部件之间添加水平间隔,但不知道如何添加。

这是一种使用“假”垫片的方法。

QPushButton *leftButton = new QPushButton("Left");
QPushButton *rightButton = new QPushButton("Right");
QLabel *spacer = new QLabel(); // fake spacer
ui->statusBar->addPermanentWidget(leftButton);
ui->statusBar->addPermanentWidget(spacer, 1);
ui->statusBar->addPermanentWidget(rightButton);

addPermanentWidget 中的第二个参数是“用于在状态栏增长和缩小时计算给定小部件的合适大小”。

演示:

【讨论】:

    【解决方案3】:

    我认为最简单的方法是使用QGridLayout(老实说,我从未尝试过修改状态栏)假设状态栏是小部件或从小部件下降,您可以这样做:

    QGridLayout *myGridLayout = new QGridLayout();
    statusbar->setLayout(myGridLayout)
    
    QPushButton *button1 = new QPushButton(this);
    myGridLayout->addWidget(button1,0,0,1,1);
    
    QPushButton *button2 = new QPushButton(this);
    myGridLayout->addWidget(button2,X,0,1,1);
    

    最大的是X,中间要留更多的空间,我建议从3开始,然后做一些测试看看它的样子。

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多