亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

QT5實現(xiàn)電子時鐘

 更新時間:2022年06月21日 10:44:46   作者:KevinQUI  
這篇文章主要為大家詳細(xì)介紹了QT5實現(xiàn)電子時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了QT5實現(xiàn)電子時鐘的具體代碼,供大家參考,具體內(nèi)容如下

一、電子時鐘的顯示

效果如下:

電子時鐘顯示

二、新建工程

Widgets Application項目名位clock,基礎(chǔ)類位QDialog,取消創(chuàng)建UI界面的勾選框,項目名右擊添加新文件

在彈出的對話框中選擇“C++ Class”,Base class基礎(chǔ)類名“QLCDNumber”,class name命名為digiclock,點擊完成。

三、編輯digiclock.h文件

#ifndef DIGICLOCK_H
#define DIGICLOCK_H
#include <QLCDNumber>
?
class DigiClock : public QLCDNumber
{
public:
? ? DigiClock(QWidget *parent=0);
? ? void mousePressEvent(QMouseEvent *);
? ? void mouseMoveEvent(QMouseEvent *);
private slots:
? ? void showTime();//顯示槽函數(shù)
?
private:
? ? QPoint dragPosition;//相對位置偏移
? ? bool showColon;//是否顯示“:”
? ? QTimer *mtimer;
};
?
#endif // DIGICLOCK_H

四、編輯digiclock.cpp文件

#include "digiclock.h"
#include <QTime>
#include <QTimer>
#include <QMouseEvent>
#include <QDebug>
?
DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{
? ? QPalette p = palette();//
? ? p.setColor(QPalette::Window,Qt::blue);
? ? setPalette(p);//設(shè)置窗體顏色
? ? setWindowFlags(Qt::FramelessWindowHint);//窗體設(shè)置位無邊框
? ? setWindowOpacity(0.5);//設(shè)置透明度
? ? mtimer = new QTimer(this);//new 定時器對象
? ? //下列方法1不可以定時
? ? //connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime()));
? ? //下列方法2可以實現(xiàn)定時
? ? connect(mtimer,&QTimer::timeout,[=](){showTime();}); ??
? ? if(mtimer->isActive()==false)//定時器檢查激活狀態(tài)
? ? {
? ? mtimer->start(1000);//啟動
? ? }
? ? showTime();//槽函數(shù)
? ? resize(300,60);
? ? showColon=true;
}
void DigiClock::showTime()
{
? ? QTime time1 = QTime::currentTime();//獲取當(dāng)前時間
? ? QString text = time1.toString("hh:mm:ss");
? ? this->setDigitCount(8);//設(shè)置顯示長度
?
? ? if(showColon)
? ? {
? ? ? ? text[2]=':';
? ? ? ? text[5]=':';
? ? ? ? showColon=false;
? ? }else
? ? {
? ? ? ? text[2]=' ';
? ? ? ? text[5]=' ';
? ? ? ? showColon=true;
? ? }
? ? ?//qDebug()<<text;
? ? ?display(text);
}
void DigiClock::mousePressEvent(QMouseEvent *event)
{
? ? if(event->button()==Qt::LeftButton)
? ? {
? ? ? ? //獲取移動參考點
? ? ? ? dragPosition=event->globalPos()-frameGeometry().topLeft();
? ? ? ? event->accept();
? ? }
? ? if(event->button()==Qt::RightButton)
? ? {
? ? ? ? close();
? ? }
}
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
? ? if(event->buttons()&Qt::LeftButton)
? ? {
? ? ? ? move(event->globalPos()-dragPosition);//拖拽移動
? ? ? ? event->accept();
? ? }
}

五、編輯主函數(shù)

#include "dialog.h"
?
#include <QApplication>
#include "digiclock.h"
?
int main(int argc, char *argv[])
{
? ? QApplication a(argc, argv);
? ? DigiClock w;
? ? w.show();
? ? return a.exec();
}

六、總結(jié)

調(diào)試方法1時,connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime()));不能實現(xiàn)定時的效果,糾結(jié)了好一陣,還是沒發(fā)現(xiàn)問題,可能時QT書寫形式更新了?

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論