问:如何在状态栏中添加两个小部件(比如说QPushButton),一个在左边,另一个在右边?

时间:2014-09-09 13:46:10

标签: c++ qt layout statusbar

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

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

PS:我尝试使用addWidget()添加到左侧,addPermanentWidget()添加到右边但它看起来并不整洁,也感觉不对。< / p>

3 个答案:

答案 0 :(得分:7)

您可以向窗口小部件中的布局添加两个按钮,并使用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);

答案 1 :(得分:3)

  

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

这是一种使用“假”间隔物的方法。

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中的第二个参数“用于在状态栏增大和缩小时为给定小部件计算合适的大小”。

演示:

Result looks like this.

答案 2 :(得分:0)

我认为最简单的方法是使用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开始,然后进行一些测试,看看它的外观。