QTimer与QTime实现电子时钟

 更新时间:2020年05月30日 08:58:09   作者:Saqino  
这篇文章主要为大家详细介绍了QTimer与QTime实现电子时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了QTimer与QTime实现电子时钟的具体代码,供大家参考,具体内容如下

使用QLCDNumber控件进行显示

QLCDNumber控件默认只显示5个字符,可以使用setDigitCount(int size)进行设置显示个数

使用Display(QString str) 设置显示内容

该函数拥有多个重载,字符 整型 浮点型都可以作为参数 

效果图:

 

代码:头文件

#include <QLCDNumber>
 
class NumClock : public QLCDNumber
{
 Q_OBJECT
public:
 explicit NumClock(QWidget *parent = nullptr);
 void mousePressEvent(QMouseEvent *event);
 void mouseMoveEvent(QMouseEvent *event);
 
signals:
 
public slots:
 void updateTime();
 
private:
 QTimer * timer;
 QPoint mouseOfPonit; // 鼠标坐标跟窗口左上角坐标的偏移值
 bool showColon;    //是否显示:
};

cpp文件:

#include "numclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
#include <QDebug>
 
NumClock::NumClock(QWidget *parent) : QLCDNumber(parent)
{
 timer = new QTimer(this);
 timer->setTimerType(Qt::PreciseTimer); // 设置精度为较高精度,差距在毫秒内
 timer->start(1000);
 connect(timer, SIGNAL(timeout()), this, SLOT(updateTime()),Qt::QueuedConnection);
 
 setWindowFlag(Qt::FramelessWindowHint); //没有面板边框标题栏的窗体
 setWindowOpacity(0.5); //设置窗口的透明度
 
 showColon = true;
 
 this->setDigitCount(8);
 resize(150, 100);
 
 updateTime();
 
 
 setAttribute(Qt::WA_DeleteOnClose);
}
 
void NumClock::mousePressEvent(QMouseEvent *event)
{
 if(event->button() == Qt::LeftButton){
  mouseOfPonit = event->globalPos() - this->pos();
  event->accept();
 }else{
  close();
 }
}
 
void NumClock::mouseMoveEvent(QMouseEvent *event)
{
 if(event->buttons() & Qt::LeftButton){
  move(event->globalPos() - mouseOfPonit);
  event->accept();
 }
}
 
void NumClock::updateTime()
{
 QString timeStr = QTime::currentTime().toString("hh:mm:ss");
 if(showColon){
  timeStr = timeStr.replace(QString(":"), QString(" "));
  qDebug() << timeStr;
  showColon = false;
 }else{
  timeStr = timeStr.replace(QString(" "), QString(":"));
  showColon = true;
  qDebug() << timeStr;
 }
 display(timeStr);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言重难点之内存对齐和位段

    C语言重难点之内存对齐和位段

    这篇文章主要介绍了C语言重难点之内存对齐和位段,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • C++深入讲解哈夫曼树

    C++深入讲解哈夫曼树

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近
    2022-05-05
  • C语言中const,volatile,restrict的用法总结

    C语言中const,volatile,restrict的用法总结

    以下是对C语言中const,volatile,restrict的用法进行了详细的总结介绍,需要的朋友可以过来参考下
    2013-10-10
  • C++函数返回值为对象时,构造析构函数的执行细节

    C++函数返回值为对象时,构造析构函数的执行细节

    C++函数返回值为对象时,构造析构函数的执行细节,需要的朋友,可以参考下
    2013-02-02
  • C语言使用rand函数生成随机数

    C语言使用rand函数生成随机数

    这篇文章介绍了C语言使用rand函数生成随机数的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 详解设计模式中的Command命令模式及相关C++实现

    详解设计模式中的Command命令模式及相关C++实现

    这篇文章主要介绍了详解设计模式中的Command命令模式及相关C++实现,命令模式强调调用操作的对象和操作的具体实现者之间的解耦,需要的朋友可以参考下
    2016-03-03
  • C语言时间函数的ctime()和gmtime()你了解吗

    C语言时间函数的ctime()和gmtime()你了解吗

    这篇文章主要为大家详细介绍了C语言时间函数的ctime()和gmtime(),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言实现变色进度条

    C语言实现变色进度条

    这篇文章主要为大家详细介绍了C语言实现一个变色的进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C++为什么要用指针而不直接使用对象?

    C++为什么要用指针而不直接使用对象?

    今天小编就为大家分享一篇关于C++为什么要用指针而不直接使用对象?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 如何在C语言的宏中使用类型关键字

    如何在C语言的宏中使用类型关键字

    如何在C语言的宏中使用类型关键字呢?以下是实现方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10

最新评论