4412开发板Qt定时器-实验步骤和部分代码

发布时间:2021-5-15 10:44    发布者:落风
实验目标:实现计时器功能,并且点击打点按钮将当前时间打印出来。
用到的类有 QTimer 和 QTime,QTimer 是一个计时器类,相当于秒表,QTimer 是一个时间类,相当于手表。
一:实验步骤(迅为4412开发板)
步骤一:界面布局:
拖拽组件,在属性编辑栏设置大小,然后选中按钮,点击水平布局;
1.jpg
在属性编辑栏设置 Label 的最小高度为 50,选中全部组件,点击栅格布局,如图:
2.jpg
根据实际情况调整大小,更改对象名后如下图:
3.jpg
步骤二:创建计时器类对象 timer 和时间类 time,设置初始时间为 0。
  1. class TimerP : public QMainWindow
  2. {
  3. Q_OBJECT
  4. public:
  5. explicit TimerP(QWidget *parent = 0); ~TimerP();
  6. QTimer timer;
  7. QTime time;
  8. .......... };
复制代码

步骤三:开启计时器对象,设置定时时间,时间到后会发出 timeout() 信号,绑定此信号和自定义的槽函数 timeOut_Slot()。
void start(int msec);
函数功能:开启定时器,时间到后发出 timeout 信号,并重新计时。
参数 msec 含义:定时时间,单位毫秒。
  1. TimerP::TimerP(QWidget *parent) :
  2. QMainWindow(parent), ui(new Ui::TimerP)
  3. {
  4. ui->setupUi(this);
  5. //信号 timeout 与槽函数绑定
  6. connect(&timer,SIGNAL(timeout()),this,SLOT(timeOut_Slot()));
  7. time.setHMS(0,0,0,0);
  8. ui->showTime->setText("00:00:00:000");
  9. }
  10. /**开始定时
  11. */
  12. void TimerP::on_starBu_clicked()
  13. {
  14. timer.start(3);
  15. }
复制代码

步骤四:槽函数 timeOut_Slot()内处理时间类对象,使每次计时时间结束后,时间对象能增加相同的时间,实现计时功能。
QTime addMSecs(int ms) const;
参数 msec 含义:增加的时间值,单位毫秒。
函数功能:返回一个当前时间对象之后 ms 毫秒之后的时间对象。
  1. /*
  2. * 计时
  3. */
  4. void TimerP::timeOut_Slot()
  5. {
  6. //qDebug("timt out");
  7. time = time.addMSecs(3);
  8. ui->showTime->setText(time.toString("hh:mm:ss.zzz"));
  9. }
复制代码

步骤五:打点记录功能,使用全局变量记录排名,并显示到界面。
  1. /*
  2. * 记录
  3. */
  4. void TimerP::on_bitBu_clicked()
  5. {
  6. QString temp;
  7. i=i+1;
  8. temp.sprintf("%d: ",i);
  9. ui->bitTime->append(temp);
  10. ui->bitTime->append(time.toString("hh:mm:ss.zzz"));
  11. }
复制代码

二:部分代码
  1. timerp.h:
  2. class TimerP : public QMainWindow
  3. {
  4. Q_OBJECT
  5. public:
  6. explicit TimerP(QWidget *parent = 0); ~TimerP();
  7. QTimer timer;
  8. QTime time;
  9. private slots:
  10. void on_starBu_clicked();//开始计时按钮槽函数
  11. void timeOut_Slot();//定时时间到槽函数
  12. void on_closeBu_clicked();//关闭按钮槽函数
  13. void on_resetBu_clicked();//重置按钮槽函数
  14. void on_bitBu_clicked();//打点记录按钮槽函数
  15. private:
  16. Ui::TimerP *ui;
  17. };
  18. timerp.cpp:
  19. #include
  20. #include
  21. static int i;
  22. TimerP::TimerP(QWidget *parent) :
  23. QMainWindow(parent), ui(new Ui::TimerP)
  24. {
  25. ui->setupUi(this);
  26. connect(&timer,SIGNAL(timeout()),this,SLOT(timeOut_Slot()));
  27. time.setHMS(0,0,0,0);
  28. ui->showTime->setText("00:00:00:000");
  29. }
  30. TimerP::~TimerP()
  31. {
  32. delete ui;
  33. }
  34. void TimerP::on_starBu_clicked()
  35. {
  36. timer.start(3);
  37. }
  38. /*
  39. * 处理时间类对象
  40. */
  41. void TimerP::timeOut_Slot()
  42. {
  43. //qDebug("timt out");
  44. time = time.addMSecs(3);
  45. ui->showTime->setText(time.toString("hh:mm:ss.zzz"));
  46. }
  47. /*
  48. * 关闭
  49. */
  50. void TimerP::on_closeBu_clicked()
  51. {
  52. timer.stop();
  53. i=0;
  54. }
  55. /*
  56. * 重置
  57. */
  58. void TimerP::on_resetBu_clicked()
  59. {
  60. timer.stop();
  61. time.setHMS(0,0,0,0);
  62. ui->showTime->setText("00:00:00:000");
  63. ui->bitTime->clear();
  64. i=0;
  65. }
  66. /*
  67. * 记录
  68. */
  69. void TimerP::on_bitBu_clicked()
  70. {
  71. QString temp;
  72. i=i+1;
  73. temp.sprintf("%d: ",i);
  74. ui->bitTime->append(temp);
  75. ui->bitTime->append(time.toString("hh:mm:ss.zzz"));
  76. }
复制代码

4.jpg

本文地址:https://www.eechina.com/thread-766869-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • Dev Tool Bits——使用MPLAB® Discover浏览资源
  • Dev Tool Bits——使用条件软件断点宏来节省时间和空间
  • Dev Tool Bits——使用DVRT协议查看项目中的数据
  • Dev Tool Bits——使用MPLAB® Data Visualizer进行功率监视
  • 贸泽电子(Mouser)专区
关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表