<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了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(); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45