Я хотел бы добавить два виджета (скажем, QPushButton
) в строке состояния, один слева и другой справа.
Я думаю о добавлении горизонтальной прокладки между двумя виджетами, но не знаю, как добавить.
PS: я пытался использовать addWidget()
добавить слева и addPermanentWidget()
добавить справа, но это не выглядит аккуратно, а также он не чувствует себя хорошо.
Вы можете добавить две кнопки к макету в виджете и добавить виджет в строку состояния, используя 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);
Я думаю о добавлении горизонтальной прокладки между двумя виджетами, но не знаю, как добавить.
Вот способ использования «поддельной» проставки.
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 «используется для вычисления подходящего размера для данного виджета, когда строка состояния увеличивается и уменьшается».
Демо-версия:
Я думаю, что самый простой способ заключается в использовании 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, а затем сделать несколько тестов, чтобы увидеть, как это выглядит.