Qt考试倒计时代码实现
时间: 2024-10-08 09:14:08 浏览: 30
在Qt中实现一个简单的考试倒计时功能,你可以创建一个QLabel来显示剩余时间,并通过定时器定期更新这个标签。以下是一个基本的代码示例:
```cpp
#include <QApplication>
#include <QWidget>
#include <QTimer>
#include <QLabel>
class ExamTimer : public QWidget {
public:
explicit ExamTimer(QWidget *parent = nullptr)
: QWidget(parent), m_timer(this), m_timeLeft(0) {
setLayout(new QVBoxLayout(this));
QLabel* label = new QLabel("考试倒计时:", this);
label->setAlignment(Qt::AlignCenter);
layout()->addWidget(label);
m_labelTime = new QLabel(tr("00:00"), this);
m_labelTime->setAlignment(Qt::AlignCenter);
layout()->addWidget(m_labelTime);
connect(&m_timer, &QTimer::timeout, this, &ExamTimer::updateCountdown);
startTimer(1000); // 每秒更新一次
}
private slots:
void updateCountdown() {
if (m_timeLeft > 0) {
m_timeLeft--;
QString timeStr = QString::fromNumber(m_timeLeft / 60, '0') + ":"
+ QString::fromNumber(m_timeLeft % 60, '0');
m_labelTime->setText(timeStr);
} else {
QTimer::singleShot(0, this, &ExamTimer::shutdown); // 倒计时结束后关闭窗口
}
}
void shutdown() {
close(); // 关闭窗口
}
private:
QTimer m_timer;
int m_timeLeft; // 原始设定的时间,单位为秒
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
ExamTimer timer;
timer.setWindowModality(Qt::ApplicationModal); // 确保窗口全屏
timer.resize(300, 150);
timer.show();
timer.m_timeLeft = 60 * 60; // 设定倒计时时间为一小时
return app.exec();
}
```
在这个例子中,我们创建了一个`ExamTimer`类,它包含一个`QTimer`用于每秒钟减少剩余时间并更新`QLabel`。当倒计时结束时,会自动关闭窗口。
阅读全文