国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

4412開發(fā)板Qt定時器-實驗步驟和部分代碼

發(fā)布時間:2021-5-15 10:44    發(fā)布者:落風
實驗目標:實現(xiàn)計時器功能,并且點擊打點按鈕將當前時間打印出來。
用到的類有 QTimer 和 QTime,QTimer 是一個計時器類,相當于秒表,QTimer 是一個時間類,相當于手表。
一:實驗步驟(迅為4412開發(fā)板)
步驟一:界面布局:
拖拽組件,在屬性編輯欄設置大小,然后選中按鈕,點擊水平布局;

在屬性編輯欄設置 Label 的最小高度為 50,選中全部組件,點擊柵格布局,如圖:

根據(jù)實際情況調整大小,更改對象名后如下圖:

步驟二:創(chuàng)建計時器類對象 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. .......... };
復制代碼

步驟三:開啟計時器對象,設置定時時間,時間到后會發(fā)出 timeout() 信號,綁定此信號和自定義的槽函數(shù) timeOut_Slot()。
void start(int msec);
函數(shù)功能:開啟定時器,時間到后發(fā)出 timeout 信號,并重新計時。
參數(shù) msec 含義:定時時間,單位毫秒。
  1. TimerP::TimerP(QWidget *parent) :
  2. QMainWindow(parent), ui(new Ui::TimerP)
  3. {
  4. ui->setupUi(this);
  5. //信號 timeout 與槽函數(shù)綁定
  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. }
復制代碼

步驟四:槽函數(shù) timeOut_Slot()內處理時間類對象,使每次計時時間結束后,時間對象能增加相同的時間,實現(xiàn)計時功能。
QTime addMSecs(int ms) const;
參數(shù) msec 含義:增加的時間值,單位毫秒。
函數(shù)功能:返回一個當前時間對象之后 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();//開始計時按鈕槽函數(shù)
  11. void timeOut_Slot();//定時時間到槽函數(shù)
  12. void on_closeBu_clicked();//關閉按鈕槽函數(shù)
  13. void on_resetBu_clicked();//重置按鈕槽函數(shù)
  14. void on_bitBu_clicked();//打點記錄按鈕槽函數(shù)
  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. }
復制代碼



本文地址:http://www.4huy16.com/thread-766869-1-1.html     【打印本頁】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據(jù)著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 電動兩輪車設計生態(tài)系統(tǒng)
  • Microchip第22屆中國技術精英年會上海首站開幕
  • Microchip第22屆中國技術精英年會——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 貿澤電子(Mouser)專區(qū)
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表