我想在状态栏中添加两个小部件(比如说QPushButton
),一个在左边,另一个在右边。
我正在考虑在两个小部件之间添加水平间隔,但不知道如何添加。
PS:我尝试使用addWidget()
添加到左侧,addPermanentWidget()
添加到右边但它看起来并不整洁,也感觉不对。< / p>
答案 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中的第二个参数“用于在状态栏增大和缩小时为给定小部件计算合适的大小”。
演示:
答案 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开始,然后进行一些测试,看看它的外观。