QProgressBar
的 setFormat
函数用于设置进度条的文本格式。通过这个函数,你可以定义在进度条上显示的文本内容,比如当前的百分比、值和总值等。
函数原型
void QProgressBar::setFormat(const QString &format);
作用
- 自定义显示格式:你可以使用
%p%
来表示当前进度百分比,使用%v
来表示当前值,使用%m
来表示最大值。 - 动态更新:当你更新进度条的值时,显示在进度条上的文本也会随之更新,根据你设定的格式变化。
示例代码
以下是一个简单的示例,展示如何使用 setFormat
:
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
#include <QProgressBar>
#include <QTimer>
class ProgressBarExample : public QWidget {
Q_OBJECT
public:
ProgressBarExample(QWidget *parent = nullptr) : QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);
progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);
progressBar->setFormat("Completed: %p%"); // 设置显示格式
layout->addWidget(progressBar);
QPushButton *startButton = new QPushButton("Start", this);
layout->addWidget(startButton);
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &ProgressBarExample::updateProgress);
connect(startButton, &QPushButton::clicked, this, [this]() {
progressValue = 0;
progressBar->reset();
timer->start(100); // 每100ms更新一次
});
}
private slots:
void updateProgress() {
if (progressValue >= 100) {
timer->stop();
return;
}
progressValue++;
progressBar->setValue(progressValue); // 更新进度条的值
}
private:
QProgressBar *progressBar;
QTimer *timer;
int progressValue = 0; // 当前进度值
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
ProgressBarExample window;
window.resize(300, 150);
window.setWindowTitle("QProgressBar Example");
window.show();
return a.exec();
}
#include "main.moc"
在这个示例中:
- 创建了一个
QProgressBar
并设置其范围为 0 到 100。 - 使用
setFormat("Completed: %p%")
设置了文本格式,当调用setValue()
更新进度时,这个字符串将会自动反映当前的百分比。 - 使用一个计时器每隔一段时间增加进度,从而演示动态效果。
这样,当程序运行并点击“Start”按钮后,你将看到进度条随着时间推移而填满,同时上面的文本会显示完成比例,如“Completed: 45%”。
内容由零声教学AI助手提供,问题来源于学员提问