如何在状态栏的中心对齐QProgressBar并显示文本?

时间:2015-08-03 20:08:39

标签: qt

我正在状态栏中显示进度条,但它并没有真正对齐。如果可能的话,我希望它显示中心对齐,或者至少在左边有一些边距,我附上快照。

我遇到的第二个问题是我希望它显示文字,但文字没有显示。

_progressBar = new QProgressBar(this);

_progressBar->setRange(0, 0);
_progressBar->setTextVisible(true);
_progressBar->setFormat("Connecting");

ui->statusBar->addPermanentWidget( _progressBar, 2 );

因为我们在它,所以stretch参数(在ctor中)的默认值为0,但它并没有真正说出它可能具有的其他值。 0产生最短的大小和任何其他大于0的值我尝试给出了最大值。中间没有任何东西。我尝试修复stretch值的问题,但没有成功。

enter image description here

1 个答案:

答案 0 :(得分:3)

第一期:
如果要在进度条左侧添加一些空格,可以使用QSpacerItem。将此QSpacerItemQProgressBar换成QWidget,然后在状态栏中添加此QWidget

QProgressBar * _progressBar = new QProgressBar();
_progressBar->setRange(1, 10);
_progressBar->setValue(2);
_progressBar->setTextVisible(true);
_progressBar->setFormat("Connecting");

QWidget * w = new QWidget;
QHBoxLayout * _hlayout = new QHBoxLayout();
_hlayout->addSpacerItem(new QSpacerItem(40,1));
_hlayout->addWidget(_progressBar);
w->setLayout(_hlayout);

ui->statusBar->addPermanentWidget(w, 2);

enter image description here


第二期:
一旦您使用指定范围内的值调用QProgressBar::setValue,您的文本就会显示:

QProgressBar * _progressBar = new QProgressBar();

_progressBar->setRange(0, 100);
_progressBar->setValue(10);
_progressBar->setTextVisible(true);
_progressBar->setFormat("Connecting");

ui->statusBar->addPermanentWidget( _progressBar, 2 );

顺便说一下,栏右边的空边是文字显示的位置 如果您想要删除该空格,可以添加_progressBar->setAlignment(Qt::AlignCenter);以使文字位于QProgressBar上方:   enter image description here