<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了Qt實現電子時鐘的具體程式碼,供大家參考,具體內容如下
進一步認識Qt中的屬性,我們現在再做一個小練習,去實現一個簡易版電子時鐘的效果。
效果展示:
新建專案:
我們建立了lcdclock2類,其實是沒有用到的,實際上是新增新一個C++檔案來實現電子鐘。
新增C++檔案:
程式碼:
clock.h
#ifndef CLOCK_H #define CLOCK_H #include <QDialog> class clock : public QDialog { Q_OBJECT public: clock(QWidget *parent = 0); ~clock(); }; #endif // CLOCK_H
這個clock檔案沒有啥用處,其實就是為了建立對話方塊存在的。
digitalclock.h
#ifndef DIGITALCLOCK_H #define DIGITALCLOCK_H #include<QLCDNumber> class digitalclock : public QLCDNumber { Q_OBJECT public: digitalclock(QWidget* parent=0); protected: void mousePressEvent(QMouseEvent* event); void mouseMoveEvent(QMouseEvent* event); private slots: void showTime(); private: QPoint m_dragPosition; bool m_showColon; }; #endif // DIGITALCLOCK_H
新增的digitalclock標頭檔案新增標頭檔案QLCDNumber,在新增元物件系統,這個是必要的。接著需要重寫滑鼠點選事件mousePressEvent還有mouseMoveEvent滑鼠移動事件。再寫一個槽函數用來顯示時間,就是將時間列印到對話方塊裡面。這裡有兩個私有變數一個是m_dragPosition用來儲存滑鼠點選點到視窗左上方的位置距離。另外有一個變數是bool型別 m_showColon用來儲存冒號出現的狀態,達到頻閃狀態。
clock.cpp
#include "clock.h" clock::clock(QWidget *parent) : QDialog(parent) { } clock::~clock() { }
digitalclock.cpp
#include "digitalclock.h" #include<QMouseEvent> #include<QDebug> #include<QTime> #include<QTimer> digitalclock::digitalclock(QWidget* parent):QLCDNumber(parent) { //設定藍色背景 QPalette p=palette();//palette函數返回一個調色盤 p.setColor(QPalette::Window,Qt::blue); setPalette(p);//將獲取的調色盤設定為表單的顏色 //設定邊框格式 setWindowFlags(Qt::FramelessWindowHint); //設定表單透明度 setWindowOpacity(0.5); QTimer* timer=new QTimer(this); connect(timer,&QTimer::timeout,this,&digitalclock::showTime); timer->start(1000);//設定計時器週期 showTime(); resize(200,100); m_showColon=true; } void digitalclock::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton){ m_dragPosition=event->globalPos()-frameGeometry().topLeft(); qDebug()<<"全域性座標:"<<event->globalPos(); qDebug()<<"左上角座標"<<frameGeometry().topLeft(); event->accept(); }else{ close();//關閉視窗 } } void digitalclock::mouseMoveEvent(QMouseEvent *event) { if(event->buttons()==Qt::LeftButton){ move(event->globalPos()-m_dragPosition); //移動電子時鐘,move函數實際是根據視窗左上角為焦點來移動,如果不減去滑鼠和左上角的偏移值,視窗會自動偏移 event->accept(); } } void digitalclock::showTime() { QTime time=QTime::currentTime();//定義一個時間物件,獲取當前的時間 QString strTime=time.toString("hh:mm");//將時間轉為字串,並且指定格式 if(m_showColon){ strTime[2]=':'; }else{ strTime[2]=' '; } display(strTime); m_showColon=!m_showColon;//將冒號的顯示狀態設定為與之前想反,這樣就達到頻閃的樣子 }
建構函式:
首先定義一個調色盤物件,利用palette()函數返回一個調色盤。在利用調色盤的函數setColror(顏色型別,顏色);設定表單風格函數用到setWIndowFlags();設定表單透明度函數是setWIndowOpacity函數。緊接著再定義一個計時器QTimer.再將計時器與showTIme槽函數聯絡起來,每當計時器的時間到的時候就呼叫槽函數,之後再利用resize函數將視窗的大小重新設定。首先將冒號顯示狀態設定為真。
滑鼠點選函數mousePreessEvent函數:
首先判斷滑鼠是否為左鍵點選,如果是那就將滑鼠點選的點和視窗左上角點的距離計算出來,儲存在m_dragposition。每次到函數結尾的時候一定要帶上event.accept接受函數修改。
滑鼠移動事件mouseMoveEvent函數:
首先判斷滑鼠左鍵是否被點選,因為通常的情況下,滑鼠的移動是按左鍵拖動的,move函數實際是以視窗的左上方為焦點的,如果我們單純傳滑鼠的全域性座標,那這樣視窗的左上方會跳動到滑鼠的點選點。這樣就不好看,所以在傳進座標的時候,就是傳滑鼠點選的點減去視窗左上方相對於滑鼠按下的偏移位置。
時間顯示函數showTIme函數:
時間顯示函數就是定義一個時間物件,利用QTime::Current函數獲取當前的時間。在將時間轉成指定的格式字串,緊接著判斷冒號的顯示狀態,將冒號根據狀態設定有無。顯示時間真正的函數是display函數,將時間字串列印到視窗內。之後再將冒號狀態取反,達到每個一秒頻閃。
mian.cpp
#include "clock.h" #include <QApplication> #include"digitalclock.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); digitalclock w; w.show(); return a.exec(); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援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