Qt 之 数字钟
2018-06-17 23:34:54来源:未知 阅读 ()
本例展示了 QTimer 的使用,如何定时更新一个窗口部件 DigitalClock
1 QLCDNumber 类
QLCDNumber 是一种可将数字显示为类似 LCD 形式的窗口部件,它同 QLabel 一样,都继承自 QFrame,而 QFrame 继承自 QWidget
头文件 digitalclock.h
1 #include <QLCDNumber> 2 3 class DigitalClock : public QLCDNumber 4 { 5 Q_OBJECT 6 7 public: 8 DigitalClock(QWidget *parent = 0);
9 10 private slots: 11 void showTime(); 12 };
DigitalClock 继承自 QLCDNumber 类,对于需要信号和槽的类,#5 处的 Q_OBJECT 宏是必需的,#8 声明构造函数,#10~11 声明槽函数 showTime()
1.1 构造函数
1 DigitalClock::DigitalClock(QWidget *parent) 2 : QLCDNumber(parent) 3 { 4 setSegmentStyle(QLCDNumber::Filled); 5 6 showTime(); 7 8 setWindowTitle("Digital Clock"); 9 resize(150, 60); 10 }
1.2 槽函数
#3 获取到当前时间后,#4 将其转换为 “hh:mm” 格式,#5 显示出时间。
1 void DigitalClock::showTime() 2 { 3 QTime time = QTime::currentTime(); 4 QString text = time.toString("hh:mm"); 5 display(text); 6 }
此时,程序可以显示数字时钟,但不是实时,只在第一次运行时获取当前的时间并显示出来。为了实时显示,则需要下面的 QTimer 类。
2 QTimer 类
QTimer 类继承自 QObject,可用来实时的更新时间。构造函数如下:#6 新建一个定时器,#7 利用 connect() 函数,连接信号 timeout() 和 槽函数 showTime(),#8 开启定时器,并设置时间间隔为 1000 ms
1 DigitalClock::DigitalClock(QWidget *parent) 2 : QLCDNumber(parent) 3 { 4 setSegmentStyle(QLCDNumber::Filled); 5 6 QTimer *timer = new QTimer(this); 7 connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); 8 timer->start(1000); 9 10 showTime(); 11 12 setWindowTitle("Digital Clock"); 13 resize(150, 60); 14 }
最终的 showTime() 如下: #5 和 #6 通过取余运算,使得时钟和分钟之间的分号,每隔一秒就消失,从而实现闪烁功能
1 void DigitalClock::showTime() 2 { 3 QTime time = QTime::currentTime(); 4 QString text = time.toString("hh:mm"); 5 if((time.second() % 2) == 0) 6 text[2] = ' '; 7 display(text); 8 }
界面如下:
参考资料
Qt 助手,Qt 5.8 | Qt Widgets | Digital Clock Example
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 括号生成 2020-04-09
- L1-007 念数字 (10分) 2020-03-22
- Qt5小Demo之猜数字游戏 2020-03-19
- 回文数字的验证 2020-03-13
- P1216 [IOI1994]数字三角形 2020-02-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash