Qt - 与众不同的电子时钟

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



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

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


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

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


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


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

全部代码就这么几行:


Clock::Clock(QWidget *parent) : QWidget(parent), ui(new Ui::Clock) { ui->setupUi(this); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); timer->start(1000); showTime(); } Clock::~Clock() { delete ui; } void Clock::showTime() { //lcd QTime time = QTime::currentTime(); QString text = time.toString("hh:mm:ss"); ui->lcdNumber->display(text); //ourclock ui->hourh->setIcon(QPixmap(this->getPngName(text[0]))); ui->hourl->setIcon(QPixmap(this->getPngName(text[1]))); ui->minh->setIcon(QPixmap(this->getPngName(text[3]))); ui->minl->setIcon(QPixmap(this->getPngName(text[4]))); ui->sech->setIcon(QPixmap(this->getPngName(text[6]))); ui->secl->setIcon(QPixmap(this->getPngName(text[7]))); } QString Clock::getPngName(QChar x) { return (x+QString(".png") ); }


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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值