本文主要是介绍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()
{//lcdQTime time = QTime::currentTime();QString text = time.toString("hh:mm:ss");ui->lcdNumber->display(text);//ourclockui->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? 还是那四个字:欢迎交流~~~
这篇关于Qt - 与众不同的电子时钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!