Qt - 与众不同的电子时钟

Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意。

美化一下系统时钟,抛开固有控件躯壳,DIY效果让人眼前一亮,要知道细节决定UI成败。这也是我一直所追求的。

思路非常简单,就是利用label或者button贴图变化显示。

一说到贴图,有人可能就会认为代码冗余,哐哐的加载图片大坨的判断和代码量……其实贴图也讲究方法,比如我实现了一个:

getPngName(QChar x)来获取资源名称,和数字0123456789对应起来,即:资源图片名称为0.png,1.png...以此类推,所以只需要:

  1. QString Clock::getPngName(QChar x)
  2. {
  3. return (x+QString(".png") );
  4. }

就可以了。真的很简单吧……

全部代码就这么几行:

  1. Clock::Clock(QWidget *parent) :
  2. QWidget(parent),
  3. ui(new Ui::Clock)
  4. {
  5. ui->setupUi(this);
  6. timer = new QTimer(this);
  7. connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
  8. timer->start(1000);
  9. showTime();
  10. }
  11. Clock::~Clock()
  12. {
  13. delete ui;
  14. }
  15. void Clock::showTime()
  16. {
  17. //lcd
  18. QTime time = QTime::currentTime();
  19. QString text = time.toString("hh:mm:ss");
  20. ui->lcdNumber->display(text);
  21. //ourclock
  22. ui->hourh->setIcon(QPixmap(this->getPngName(text[0])));
  23. ui->hourl->setIcon(QPixmap(this->getPngName(text[1])));
  24. ui->minh->setIcon(QPixmap(this->getPngName(text[3])));
  25. ui->minl->setIcon(QPixmap(this->getPngName(text[4])));
  26. ui->sech->setIcon(QPixmap(this->getPngName(text[6])));
  27. ui->secl->setIcon(QPixmap(this->getPngName(text[7])));
  28. }
  29. QString Clock::getPngName(QChar x)
  30. {
  31. return (x+QString(".png") );
  32. }

其实demo很简单,重点是变换显示效果的思想和手段。

Any good ideas?  还是那四个字:欢迎交流~~~

时间: 2024-08-09 06:28:55

Qt - 与众不同的电子时钟的相关文章

JavaScript电子时钟+倒计时

JavaScript时间类 获取时分秒: getHours() getMinutes(); getSeconds(); 获取年月日: getFullYear(); getMonth() + 1;//获取的月份需要+1: getDate(); //日期 getDay(); //获取的是星期,0-->星期天 实例:(效果图) <!DOCTYPE html> <html lang="en"> <head> <meta charset="

PyQt5用QTimer编写电子时钟

[说明] 本文用 PyQt5 的QTimer类的两种方式实现电子时钟 [效果图] [知识点] QTimer类提供了定时器信号/槽和单触发定时器. 它在内部使用定时器事件来提供更通用的定时器. QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽.当这段时间过去了,它将会发射timeout()信号. [实现] 1.定时器信号/槽方式 1 class MyTimer(QWidget): 2 def __init__(self, parent

利用51单片机制作的电子时钟

最近研究起来了单片机,用的是国产STC98C52芯片. STC89C52是STC公司生产的一种低功耗.高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器.STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能.在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活.超有效的解决方案. 买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供

4-2电子时钟中的运算符重载

4-2 电子时钟中的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以运算符重载的方法: 设计一个时间类Time,私有数据成员有hour(时).minute(分).second(秒): 公有成员函数有:setHour(int)设置数据成员hour的值,非法的输入默认为12:setMinue(int)设置数据成员minute的值,非法输入默认为0:setSecond(int)设置数据成员second的值,非法输入默认为0:se

基于单片机的电子时钟(有报时和定时)

我相信电工类的专业,对于单片机这个老东西是很熟悉的.下面.是我YID的一个电子时钟,包含了一个时钟的基本功能,定时和报时.(如果没有C51和单片机的基础知识可以先看看)话不多说.这来上来了: 要资料点击这里:下载地址1:下载地址2: 资料清单: (1)原件: (2) 控制流程图: (3)电路图(由于电路截图比较大,这里就不贴出来了.需要的朋友可以点击上面的下载地址下载) (4)最关键的地方来了,(电子时钟的c代码实现): #include<reg51.h> //头文件  定义单片机内部寄存器

一款纯JavaScript的圆形电子时钟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>一款纯JavaScript的圆形电子时钟丨

美女时钟+电子时钟

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <title>美女时钟</ti

JS的Form文本框内的电子时钟

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>JS的Form文本框内的电子时钟丨石家庄玻璃隔断厂家</TITLE> </HEAD> <body bgcolor="#ffffff" onLoad="startclock();"> <scri

随机事件、电子时钟、验证码

Dom的运用: 1.电子时钟 时间:<input id="tt" type="text">//html中建立文本框显示时间 <script> function dianziTime(name){ var t = new Date(),//新建一个时间 y = t.getFullYear(),//获取年 m = (+t.getMonth()+1) >= 10 ? +t.getMonth()+1 : "0" +(+t.g