如何使用QT库开发一个计时器应用程序?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1254个文字,预计阅读时间需要6分钟。
本例展示了如何使用Qt实现计时器功能的整体代码,供大家参考。首先新建工程,选择Ctrl+N,然后选择Application (Qt)和Qt Widgets Application,创建一个新项目。进入设置界面,命名和路径随意即可。
cpp#include #include #include #include #include
class TimerWidget : public QWidget { Q_OBJECT
public: TimerWidget(QWidget *parent=nullptr) : QWidget(parent) { QVBoxLayout *layout=new QVBoxLayout(this);
label=new QLabel(00:00:00, this); layout->addWidget(label);
QTimer *timer=new QTimer(this); connect(timer, &QTimer::timeout, this, &TimerWidget::updateTimer); timer->start(1000);
updateTimer(); }
private slots: void updateTimer() { int hours=elapsedSeconds() / 3600; int minutes=(elapsedSeconds() % 3600) / 60; int seconds=elapsedSeconds() % 60;
label->setText(QString(%1:%2:%3) .arg(hours, 2, 10, QChar('0')) .arg(minutes, 2, 10, QChar('0')) .arg(seconds, 2, 10, QChar('0'))); }
private: QLabel *label; int elapsedSeconds() { return 0; // Replace with actual elapsed seconds calculation }};
#include main.moc
int main(int argc, char *argv[]) { QApplication app(argc, argv);
TimerWidget timerWidget; timerWidget.show();
return app.exec();}
本文实例为大家分享了QT实现计时器功能的具体代码,供大家参考,具体内容如下
首先新建工程,Ctrl+N->Application(Qt)->Qt Widgets Application,然后进入设置界面,名称和路径随意就好;Build System不考虑性能用qmake比较简单;剩下的采用默认选项就行。
初始化结束后,其项目文件组织如下
Timer.pro此为工程文件Headers用于存放头文件的目录Sources用于存放源代码Forms用于存放.ui文件,即界面设计文件
双击Forms下面的mainwindow.ui文件,进入图形化的UI编辑界面,左侧为各种控件,中间为程序设计的主窗口。由于一个计时器不需要太大的尺寸,故而可以直接拖动窗口右下角的三个点,更改其尺寸。也可以定位到右侧属性栏的geometry,展开后将宽度和高度分别设为400和200。
然后,将左侧Buttons下面的Push Button拖动到主窗口,然后在右侧可看到Push Button的各种属性。将QObject中的objectName改为pbStart;将QAbstractButton下的text改为start。一会儿用于开始计时。
在左侧搜索LCD,将LCD Number拖动到主窗口,将名字改为Timer,用于显示时间。
此时,我们最左侧的选项卡选中的是第三个设计,若点击第二个编辑,则可直接编辑窗口设计文件mainWindow.ui,然而只是让人看看,并不让编辑。但总之,至此已写完了一个简单的UI
接下来,要实现计时器的核心功能——计时,从而需要写c++代码。首先在.h文件中,写入需要的成员变量。考虑到要实现计时器的功能,所以至少需要一个用于计时的时钟和一个可以记录秒数的整数。故而进入mainWindow.h,在private:下输入成员,当然也不要忘了导入头文件,最终结果为
private: Ui::MainWindow *ui; QTimer * timer; QTime * TimeRecord;
除了成员变量,还要有成员函数。其中计时需要绑定一个函数,start按钮需要绑定一个,外加时间归零需要一个,故需三个成员函数,最终mainWindow.h内容为
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTimer> #include <QTime> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow{ Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void initTime(); void updateTime(); void pbStart_clicked(); private: Ui::MainWindow *ui; QTimer * timer; QTime * TimeRecord; }; #endif // MAINWINDOW_H
定义好头文件,接下来就要在.cpp中具体实现了,代码总共不到50行,如下:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); timer = new QTimer; TimeRecord = new QTime; ui->Timer->setDigitCount(8); initTime(); //令LCD显示00:00:00 //连接槽函数,将timer的timeout行为,连接到updateTime函数中 connect(timer, SIGNAL(timeout()), this, SLOT(updateTime())); //当点击(clicked)pbStart时,调用函数pbStart_clicked connect(ui->pbStart, SIGNAL(clicked()), this, SLOT(pbStart_clicked())); } MainWindow::~MainWindow(){ delete ui; } void MainWindow::initTime(){ TimeRecord->setHMS(0, 0, 0); //时间复位为0 ui->Timer->display(TimeRecord->toString("hh:mm:ss")); } void MainWindow::updateTime(){ //每次更新时间,TimeRecord增加1 *TimeRecord = TimeRecord->addSecs(1); ui->Timer->display(TimeRecord->toString("hh:mm:ss")); } void MainWindow::pbStart_clicked(){ if (QString::compare(ui->pbStart->text(),"stop")){ //当按钮内容不为'stop'时,说明开启计时 timer->start(1000); ui->pbStart->setText("stop");//计时开始后,按钮变为'stop' }else{ timer->stop(); ui->pbStart->setText("start"); initTime(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计1254个文字,预计阅读时间需要6分钟。
本例展示了如何使用Qt实现计时器功能的整体代码,供大家参考。首先新建工程,选择Ctrl+N,然后选择Application (Qt)和Qt Widgets Application,创建一个新项目。进入设置界面,命名和路径随意即可。
cpp#include #include #include #include #include
class TimerWidget : public QWidget { Q_OBJECT
public: TimerWidget(QWidget *parent=nullptr) : QWidget(parent) { QVBoxLayout *layout=new QVBoxLayout(this);
label=new QLabel(00:00:00, this); layout->addWidget(label);
QTimer *timer=new QTimer(this); connect(timer, &QTimer::timeout, this, &TimerWidget::updateTimer); timer->start(1000);
updateTimer(); }
private slots: void updateTimer() { int hours=elapsedSeconds() / 3600; int minutes=(elapsedSeconds() % 3600) / 60; int seconds=elapsedSeconds() % 60;
label->setText(QString(%1:%2:%3) .arg(hours, 2, 10, QChar('0')) .arg(minutes, 2, 10, QChar('0')) .arg(seconds, 2, 10, QChar('0'))); }
private: QLabel *label; int elapsedSeconds() { return 0; // Replace with actual elapsed seconds calculation }};
#include main.moc
int main(int argc, char *argv[]) { QApplication app(argc, argv);
TimerWidget timerWidget; timerWidget.show();
return app.exec();}
本文实例为大家分享了QT实现计时器功能的具体代码,供大家参考,具体内容如下
首先新建工程,Ctrl+N->Application(Qt)->Qt Widgets Application,然后进入设置界面,名称和路径随意就好;Build System不考虑性能用qmake比较简单;剩下的采用默认选项就行。
初始化结束后,其项目文件组织如下
Timer.pro此为工程文件Headers用于存放头文件的目录Sources用于存放源代码Forms用于存放.ui文件,即界面设计文件
双击Forms下面的mainwindow.ui文件,进入图形化的UI编辑界面,左侧为各种控件,中间为程序设计的主窗口。由于一个计时器不需要太大的尺寸,故而可以直接拖动窗口右下角的三个点,更改其尺寸。也可以定位到右侧属性栏的geometry,展开后将宽度和高度分别设为400和200。
然后,将左侧Buttons下面的Push Button拖动到主窗口,然后在右侧可看到Push Button的各种属性。将QObject中的objectName改为pbStart;将QAbstractButton下的text改为start。一会儿用于开始计时。
在左侧搜索LCD,将LCD Number拖动到主窗口,将名字改为Timer,用于显示时间。
此时,我们最左侧的选项卡选中的是第三个设计,若点击第二个编辑,则可直接编辑窗口设计文件mainWindow.ui,然而只是让人看看,并不让编辑。但总之,至此已写完了一个简单的UI
接下来,要实现计时器的核心功能——计时,从而需要写c++代码。首先在.h文件中,写入需要的成员变量。考虑到要实现计时器的功能,所以至少需要一个用于计时的时钟和一个可以记录秒数的整数。故而进入mainWindow.h,在private:下输入成员,当然也不要忘了导入头文件,最终结果为
private: Ui::MainWindow *ui; QTimer * timer; QTime * TimeRecord;
除了成员变量,还要有成员函数。其中计时需要绑定一个函数,start按钮需要绑定一个,外加时间归零需要一个,故需三个成员函数,最终mainWindow.h内容为
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTimer> #include <QTime> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow{ Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void initTime(); void updateTime(); void pbStart_clicked(); private: Ui::MainWindow *ui; QTimer * timer; QTime * TimeRecord; }; #endif // MAINWINDOW_H
定义好头文件,接下来就要在.cpp中具体实现了,代码总共不到50行,如下:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); timer = new QTimer; TimeRecord = new QTime; ui->Timer->setDigitCount(8); initTime(); //令LCD显示00:00:00 //连接槽函数,将timer的timeout行为,连接到updateTime函数中 connect(timer, SIGNAL(timeout()), this, SLOT(updateTime())); //当点击(clicked)pbStart时,调用函数pbStart_clicked connect(ui->pbStart, SIGNAL(clicked()), this, SLOT(pbStart_clicked())); } MainWindow::~MainWindow(){ delete ui; } void MainWindow::initTime(){ TimeRecord->setHMS(0, 0, 0); //时间复位为0 ui->Timer->display(TimeRecord->toString("hh:mm:ss")); } void MainWindow::updateTime(){ //每次更新时间,TimeRecord增加1 *TimeRecord = TimeRecord->addSecs(1); ui->Timer->display(TimeRecord->toString("hh:mm:ss")); } void MainWindow::pbStart_clicked(){ if (QString::compare(ui->pbStart->text(),"stop")){ //当按钮内容不为'stop'时,说明开启计时 timer->start(1000); ui->pbStart->setText("stop");//计时开始后,按钮变为'stop' }else{ timer->stop(); ui->pbStart->setText("start"); initTime(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

