您可以使用QTimer和QProgressBar来实现这个功能。具体步骤如下:
1.在界面中添加一个QProgressBar和一个QLabel,用于显示秒数。
2.创建一个计时器对象,并将其连接到一个槽函数上。在槽函数中更新进度条的值,并更新标签以显示已经过去的时间。
3.启动计时器并让它运行。
以下是示例代码:
#include <QtWidgets>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent)
{
// 创建进度条和标签
progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);
progressBar->setValue(0);
timeLabel = new QLabel(this);
timeLabel->setText("Time: 0s");
// 布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(progressBar);
layout->addWidget(timeLabel);
// 创建计时器
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MyWidget::updateProgress);
// 启动计时器
timer->start(1000); // 每一秒触发一次
// 设置窗口大小
setFixedSize(200, 100);
}
private:
QProgressBar *progressBar;
QLabel *timeLabel;
QTimer *timer;
int elapsedSeconds = 0;
void updateProgress()
{
// 更新进度条
progressBar->setValue(elapsedSeconds % 101);
// 更新标签
timeLabel->setText(QString("Time: %1s").arg(elapsedSeconds));
// 增加秒数
elapsedSeconds++;
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget w;
w.show();
return app.exec();
}
在这个示例中,计时器每一秒触发一次槽函数updateProgress()。槽函数会更新进度条和标签,并增加秒数。进度条的值是秒数模101,这样可以让它在100%时重新开始。