qt中的led显示时间(Qt之数字钟)
qt中的led显示时间(Qt之数字钟)DigitalClock::DigitalClock(QWidget *parent) : QLCDNumber(parent) { setSegmentStyle(QLCDNumber::Filled); QTimer *timer = new QTimer(this); connect(timer SIGNAL(timeout()) this SLOT(showTime())); timer->start(1000); showTime(); setWindowTitle("Digital Clock"); resize(150 60); }最终的 showTime() 如下: #5 和 #6 通过取余运算,使得时钟和分钟之间的分号,每隔一秒就消失,从而实现闪烁功能QTimer 类继承自
本例展示了 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()
【相关Qt文章推荐】Qt开发进阶技术栈学习路线 资料
1.1 构造函数DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
setSegmentStyle(QLCDNumber::Filled);
showTime();
setWindowTitle("Digital Clock");
resize(150 60);
}
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(1000);
showTime();
setWindowTitle("Digital Clock");
resize(150 60);
}
最终的 showTime() 如下: #5 和 #6 通过取余运算,使得时钟和分钟之间的分号,每隔一秒就消失,从而实现闪烁功能
void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
if((time.second() % 2) == 0)
text[2] = ' ';
display(text);
}
界面如下:
如果你对QT开发感兴趣,觉得文章对您有帮助,别忘了点赞、收藏哦!或者对本文的一些阐述有自己的看法,有任何问题,欢迎在下方评论区讨论!