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

use*_*062 6 c++ layout qt statusbar

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

我想在两个小部件之间添加水平间隔,但不知道如何添加.

PS:我尝试使用addWidget()添加到左侧并addPermanentWidget()添加到右边但它看起来不整洁而且感觉不对.

Nej*_*jat 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);
Run Code Online (Sandbox Code Playgroud)


aza*_*lea 6

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

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

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);
Run Code Online (Sandbox Code Playgroud)

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

演示:

结果看起来像这样。