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

zar*_*zar 4 qt

我在状态栏中显示进度条,但它并没有很好地对齐。如果可能,我希望它显示居中对齐,或者至少在左侧有一些边距,我附上了一张快照。

我的第二个问题是我希望它显示文本但文本没有显示。

_progressBar = new QProgressBar(this);

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

ui->statusBar->addPermanentWidget( _progressBar, 2 );
Run Code Online (Sandbox Code Playgroud)

由于我们在此,stretch 参数(在 ctor 中)的默认值为 0,但它并没有真正说明它可能具有的其他值。0产生最短的大小,我尝试过的任何大于 0 的其他值都会给出最大值。中间什么都没有。我试图解决stretch价值问题但没有成功。

在此处输入图片说明

gpa*_*lex 5

第一个问题:
如果要在进度条左侧添加一些空间,可以使用QSpacerItem. 将 thisQSpacerItemQProgressBara包裹起来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);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

.
第二个问题:
一旦您QProgressBar::setValue使用指定范围内的值调用,您的文本将显示:

QProgressBar * _progressBar = new QProgressBar();

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

ui->statusBar->addPermanentWidget( _progressBar, 2 );
Run Code Online (Sandbox Code Playgroud)

顺便说一下,栏右侧的空白边距是显示文本的地方。
如果您想摆脱该空间,您可以添加_progressBar->setAlignment(Qt::AlignCenter);以将文本居中QProgressBar
在此处输入图片说明