本例展示了 QTimer 的使用,如何定时更新一个窗口部件 DigitalClock

1  QLCDNumber 类

QLCDNumber 是一种可将数字显示为类似 LCD 形式的窗口部件,它同 QLabel 一样,都继承自 QFrame,而 QFrame 继承自 QWidget

头文件 digitalclock.h

 #include <QLCDNumber>

 class DigitalClock : public QLCDNumber
{
Q_OBJECT public:
DigitalClock(QWidget *parent = );
private slots:
void showTime();
};

DigitalClock 继承自 QLCDNumber 类,对于需要信号和槽的类,#5 处的 Q_OBJECT 宏是必需的,#8 声明构造函数,#10~11 声明槽函数 showTime()

1.1  构造函数

 DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
setSegmentStyle(QLCDNumber::Filled); showTime(); setWindowTitle("Digital Clock");
resize(, );
}

1.2  槽函数

#3 获取到当前时间后,#4 将其转换为 “hh:mm” 格式,#5 显示出时间。

 void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
display(text);
}

  此时,程序可以显示数字时钟,但不是实时,只在第一次运行时获取当前的时间并显示出来。为了实时显示,则需要下面的 QTimer 类。

2  QTimer 类

QTimer 类继承自 QObject,可用来实时的更新时间。构造函数如下:#6 新建一个定时器,#7 利用 connect() 函数,连接信号 timeout() 和 槽函数 showTime(),#8 开启定时器,并设置时间间隔为 1000 ms

 DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
setSegmentStyle(QLCDNumber::Filled); QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
timer->start(); showTime(); setWindowTitle("Digital Clock");
resize(, );
}

最终的 showTime() 如下: #5 和 #6 通过取余运算,使得时钟和分钟之间的分号,每隔一秒就消失,从而实现闪烁功能

 void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
if((time.second() % ) == )
text[] = ' ';
display(text);
}

界面如下:

  aaarticlea/png;base64,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" alt="" width="323" height="148" />

参考资料

Qt 助手,Qt 5.8 | Qt Widgets | Digital Clock Example

Qt 之 数字钟的更多相关文章

  1. 基于basys2用verilog设计多功能数字钟(重写)

    话不多说先上图         前言 自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表.记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满 ...

  2. 基于BASYS2的VHDL程序——数字钟

    在编电子表时发现FPGA求余,取模只能针对2的次方.毕竟是数字的嘛! 时钟用到了动态刷新数码管.以一个大于50Hz的速度刷新每一个数码管. 因为数码管只有四个,只写了分针和秒针. 代码如下: libr ...

  3. Qt项目——数字内容管理系统的参考资料和细节

    打开文件路径,若带空格,要用引号括起路径 LPCWSTR与QString的转换:LPCWSTR strL = strQ.toStdWString().c_str(); 用指定程序打开文件(选择文件的打 ...

  4. FPGA 物理时序不合理的体现(体现方式:数字钟的行扫描和列扫描)

    本人在这只讨论建模好的模块来比较解释现象,如有不周到请大家指正. 软件功能仿真和在硬件上的区别:可以从这个数码管的行扫描和列扫描实例来体会一下,物理时序的影响和改进方法. 数码管的行扫描.列扫描要求同 ...

  5. VHDL硬件描述语言实现数字钟

    --VHDL上机的一个作业,程序太长实验报告册上写不下了.于是就在博客上留一份吧.LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOG ...

  6. 基于BASYS2的VHDL程序——数字钟(最终版)

    转载请注明原地址:http://www.cnblogs.com/connorzx/p/3674178.html 调时电路正常工作.一切正常.发现做FPGA还是得从数电的思路思考,设置一个预置使能端,预 ...

  7. 基于BASYS2的VHDL程序——数字钟(改进版)

    扩展到时分秒.加了入调时电路,但不知道为什么有两个按键不好使.而且不知道以何种方式假如按键消抖电路,因为加入后会多个时钟控制一个信号,物理不可实现.调试电路待解决.还有,四个数目管中间的那两个圆点怎么 ...

  8. 基于串口校时的数字钟设计(verilog实现)

    任务: 电路图设计: 设计: 模块1:1.先设计一个计数时钟,为了仿真方便,这里把1000ns当作1s. 创建一个计数器second_lim,当计数到1000/20时清零,即1s. 秒显示器secon ...

  9. Qt学习之秒表的实现(StopWatch) (转)

    秒表对于我来说并不陌生,在之前自己学习单片机时,实现过秒表和数字钟:基本思路:开启单片机带的定时器,并设置它没10ms溢出一次,分别用三个变量hour,minute,secong记录秒表的时分秒,然后 ...

随机推荐

  1. LeetCode 387. First Unique Character in a String

    Problem: Given a string, find the first non-repeating character in it and return it's index. If it d ...

  2. RNN求解过程推导与实现

    RNN求解过程推导与实现 RNN LSTM BPTT matlab code opencv code BPTT,Back Propagation Through Time. 首先来看看怎么处理RNN. ...

  3. IIS ISAPI

    cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 ...

  4. WP8解析XML格式文件

    DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式,如果要返回XML格式的话,需要在加上format=xml. 这里举一个简单的解析XML格式的例子(更 ...

  5. 【生活没有希望】poj1273网络流大水题

    你不能把数据规模改大点吗= =我优化都不加都过了 #include <cstdio> #define INF 2147483647 int n,m,ans,x,y,z,M; ],l[],f ...

  6. 在linux下Java的环境配置

    最近开始学习Java语言. 对于我这种初学者来说,一开始,我想先体验,大致看了一下Java语言是什么,如何实现... 然并卵o_O,表示看得很迷糊.还是实践最重要,把环境配置好再开始深入学习. 1.首 ...

  7. 向mysql中插入Date类型的数据

    先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...

  8. 使用nodeJs安装Vue-cli

    TIP:win10下安装,使用管理员身份进行,否则会有权限限制. 1,安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(n ...

  9. php数据加密

    <?php/** * 简单对称加密算法之加密 * @param String $string 需要加密的字串 * @param String $skey 加密EKY * @author Anyo ...

  10. js将数字转成大写中文

    <script type="text/javascript"> //主函数 function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/ ...