如何用Qt的timerEvent函数实现一个长尾词秒表,并询问其原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计579个文字,预计阅读时间需要3分钟。
本例展示了如何使用Qt的`QTimer`和`timerEvent()`实现一个简单的秒表。以下是一个简化的代码示例,适合作为参考:
cpp#include #include #include #include #include
class Stopwatch : public QWidget { Q_OBJECT
public: Stopwatch(QWidget *parent=nullptr) : QWidget(parent) { // 初始化UI QVBoxLayout *layout=new QVBoxLayout(this); label=new QLabel(00:00:00, this); label->setAlignment(Qt::AlignCenter); layout->addWidget(label);
// 初始化计时器 timer=new QTimer(this); connect(timer, &QTimer::timeout, this, &Stopwatch::updateTime); timer->start(1000); // 设置计时器间隔为1秒 }
public slots: void updateTime() { static int seconds=0; static int minutes=0; static int hours=0;
seconds++; if (seconds >=60) { seconds=0; minutes++; if (minutes >=60) { minutes=0; hours++; } }
QString timeStr=QString(%1:%2:%3) .arg(hours, 2, 10, QChar('0')) .arg(minutes, 2, 10, QChar('0')) .arg(seconds, 2, 10, QChar('0')); label->setText(timeStr); }
private: QTimer *timer; QLabel *label;};
#include main.moc
int main(int argc, char *argv[]) { QApplication app(argc, argv); Stopwatch stopwatch; stopwatch.show(); return app.exec();}
这段代码创建了一个简单的秒表,通过`QTimer`的`timeout`信号触发`updateTime()`槽函数,该函数会更新时间并显示在`QLabel`上。
本文实例为大家分享了Qt timerEvent实现简单秒表的具体代码,供大家参考,具体内容如下
#ifndef WIDGET_H #define WIDGET_H //头文件 #include<QWidget> #include<QObject> #include<QTimerEvent> #include<QTimer> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); double i = 0; //QString s = QString::number(i); private: Ui::Widget *ui; //QTimer *myTimer;// 定义定时器对象 int id1,id3; int id2 = 0; protected: void timerEvent(QTimerEvent *event); // 声明 private slots: void on_pushButton_clicked(); void on_pushButton_3_clicked(); void on_pushButton_2_clicked(); }; #endif // WIDGET_H
//widget.cpp #include "widget.h" #include "ui_widget.h" #include<QObject> #include<QTimer> #include<QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setFixedHeight(60); ui->lineEdit->setFont(QFont( "Arial" , 32 )); ui->lineEdit->setText("0.0"); } Widget::~Widget() { delete ui; } void Widget::timerEvent(QTimerEvent *event) { // 判断是哪个定时器 if(event->timerId() == id1){ qDebug() << "timer1"; i = i+0.1; QString s = QString::number(i); ui->lineEdit->setText(s); } } void Widget::on_pushButton_clicked() //开始 { id1 = startTimer(100); //timer_1 = startTimer(100); } void Widget::on_pushButton_3_clicked() //停止 { killTimer(id1); } void Widget::on_pushButton_2_clicked() //记录 { QString s = ui->lineEdit->text(); ui->listWidget->addItem(s); id2=id2+1; QString id2s = QString::number(id2); ui->label_2->setText("记录次数:"+id2s); }
ui
效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计579个文字,预计阅读时间需要3分钟。
本例展示了如何使用Qt的`QTimer`和`timerEvent()`实现一个简单的秒表。以下是一个简化的代码示例,适合作为参考:
cpp#include #include #include #include #include
class Stopwatch : public QWidget { Q_OBJECT
public: Stopwatch(QWidget *parent=nullptr) : QWidget(parent) { // 初始化UI QVBoxLayout *layout=new QVBoxLayout(this); label=new QLabel(00:00:00, this); label->setAlignment(Qt::AlignCenter); layout->addWidget(label);
// 初始化计时器 timer=new QTimer(this); connect(timer, &QTimer::timeout, this, &Stopwatch::updateTime); timer->start(1000); // 设置计时器间隔为1秒 }
public slots: void updateTime() { static int seconds=0; static int minutes=0; static int hours=0;
seconds++; if (seconds >=60) { seconds=0; minutes++; if (minutes >=60) { minutes=0; hours++; } }
QString timeStr=QString(%1:%2:%3) .arg(hours, 2, 10, QChar('0')) .arg(minutes, 2, 10, QChar('0')) .arg(seconds, 2, 10, QChar('0')); label->setText(timeStr); }
private: QTimer *timer; QLabel *label;};
#include main.moc
int main(int argc, char *argv[]) { QApplication app(argc, argv); Stopwatch stopwatch; stopwatch.show(); return app.exec();}
这段代码创建了一个简单的秒表,通过`QTimer`的`timeout`信号触发`updateTime()`槽函数,该函数会更新时间并显示在`QLabel`上。
本文实例为大家分享了Qt timerEvent实现简单秒表的具体代码,供大家参考,具体内容如下
#ifndef WIDGET_H #define WIDGET_H //头文件 #include<QWidget> #include<QObject> #include<QTimerEvent> #include<QTimer> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); double i = 0; //QString s = QString::number(i); private: Ui::Widget *ui; //QTimer *myTimer;// 定义定时器对象 int id1,id3; int id2 = 0; protected: void timerEvent(QTimerEvent *event); // 声明 private slots: void on_pushButton_clicked(); void on_pushButton_3_clicked(); void on_pushButton_2_clicked(); }; #endif // WIDGET_H
//widget.cpp #include "widget.h" #include "ui_widget.h" #include<QObject> #include<QTimer> #include<QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); ui->lineEdit->setFixedHeight(60); ui->lineEdit->setFont(QFont( "Arial" , 32 )); ui->lineEdit->setText("0.0"); } Widget::~Widget() { delete ui; } void Widget::timerEvent(QTimerEvent *event) { // 判断是哪个定时器 if(event->timerId() == id1){ qDebug() << "timer1"; i = i+0.1; QString s = QString::number(i); ui->lineEdit->setText(s); } } void Widget::on_pushButton_clicked() //开始 { id1 = startTimer(100); //timer_1 = startTimer(100); } void Widget::on_pushButton_3_clicked() //停止 { killTimer(id1); } void Widget::on_pushButton_2_clicked() //记录 { QString s = ui->lineEdit->text(); ui->listWidget->addItem(s); id2=id2+1; QString id2s = QString::number(id2); ui->label_2->setText("记录次数:"+id2s); }
ui
效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

