Qt贴图实现辉光管电子钟

放图镇楼

效果图
可以看出效果还是有点粗糙的。。尤其是辉光管图片的边缘明显。emmm那缩小了看就好hhhhhh

日前看到某宝上的创意礼物,恰好用QLCDnumber实现了一个电子钟被吐槽说丑,于是心生一计——用贴图实现一个辉光管电子钟!现在想想,大部分时间不是在写代码,而是在做美工,水平有限T T有P图大佬能指点一下怎么把背景和灯管融为一体,最好了。

功能描述

点击exe文件后,出现该时钟,可以长按左键拖动, 可以单击右键关闭;如果你愿意,还可以设置开机启动。

制作流程

建立图库

首先,找到了知乎上某大神关于如何自己制作一个 divergense meter(辉光管时钟)?的高赞回答里找到了一则大神做完的效果视频,我当时就说,就 模仿它了。然后,把视频导入Lr,我也是第一次发现Lr有视频抽帧的功能。

从中选出了同一位灯管连续从0~9的一段,抽帧后截取,然后把这一顿操作应用到其他帧上去做出了0-9的图库。赞美Lr,对图片批量操作不能更好用了。图库
然后做背景,要有点气质高贵,要有点复古情怀。于是,我打开了我唯一会的绘图软件——PowerPoint。是的,点击插入—形状,然后填充—渐变,做出一个灰色渐变的背景图。就是下图上面的部分。背景
接下来,又去某东上搜了一个辉光管电子钟的正面图,把底座截下来O rz两张图拼在一起做了一个背景。接下来只需要把之前的0~9显示在背景上就好了。

Qt程序

Qt程序的大致思路无非是用了一个QDialog做基类,用图片做背景,QTimer用于产生SIGNAL刷新画面中的数字,用QLabel显示数字图片,用QLCDnumber显示日期,使用mouseEvent控制画面移动。其中把安排控件布局的函数、显示图片的SLOT函数分开,提高代码效率。并且一定要把图片都加入资源文件,虽然后面发布的时候引起了很多错误。。。

主要是用getPng函数加载资源文件中的图片,使用Qlabel显示。下面把显示时间和日期的部分代码贴出来:

void Dialog::showDateTime(){
    QDateTime dateTime = QDateTime::currentDateTime();
    QString text = dateTime.toString("yyyy-MM-dd HH:mm:ss");

    QPixmap pixmap;
    pixmap.load(getPng(text[11]));
    hourH->setPixmap(pixmap);
    pixmap.load(getPng(text[12]));
    hourL->setPixmap(pixmap);
    pixmap.load(getPng(text[14]));
    minH->setPixmap(pixmap);
    pixmap.load(getPng(text[15]));
    minL->setPixmap(pixmap);
    pixmap.load(getPng(text[17]));
    secH->setPixmap(pixmap);
    pixmap.load(getPng(text[18]));
    secL->setPixmap(pixmap);
    show();

    QString date;
    date = text.section(' ', 0, 0);  //第三个参数不是长度而是end position
    LCDdate->display(date);
}

QString Dialog::getPng(QChar x){
    return (QString(":/image/lightBulb")+ x);
}

程序中固定了窗口的大小、不能缩放,取消了rightLayout的边距,让辉光管能正好显示在底座上。完整的代码详见:
https://download.csdn.net/download/qq_41090341/11493934

打包发布

打包发布的流程介绍的帖子很多了,先用release运行,之后使用Qt自带的windeployqt工具和Enigma生成独立的exe文件。着重mark一下,发布过程中遇到的
No rule to make target '../LightBulb/?????--1.jpg', needed by 'release/qrc_resources.cpp'. Stop.
资源文件加载除了问题,根本无法启动编译。

我先后重建了一个工程、重新上传图片等都没用,最后发现把文件夹里的图片名称汉字全改成英语,然后注释掉pro文件中的resources再恢复,就好了。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【舸轮综合船舶工作室】出品 欢迎关注b站up主:舸轮综合船舶制造 查看更多资源及教程 不保证没错误,本工作室不为使用此套开源资料造成的任何后果负责! IN14辉光钟 PCB文件及程序源码说明 版本V1.1 主要是对我奇怪的电路设计风格做一个解释(╯‵□′)╯︵┻━┻ 除了右边有一个8550外,PCB中几乎所有的三极管型号均为13001 7805最好加一个微型的散热器,实测发热较大 NE555只是拿来闪烁冒号的,不是升压的,需另外配升压板 NE555右上方那个R 500k阻值具体是多少需要试,这个阻值决定了冒号的闪烁频率 闪烁的冒号(氖泡)从板子左下角的两个2pin分别接入,切记不可并联后接入 PowerRealy是一个继电器,是用来控制升压模块通断的,封装是典型黄色的HK信号继电器 继电器左边的两个接口,标有- S +的是红外热释探头的接入口,实现人来自动开,可在-和S之间再并联一个自锁开关可实现手动开关,另一个是-IN+是电源输入,参考电压12v,电流约0.2A 单片机左边的2pin接口是升压模块电源接口 调时按钮是KEY1 KEY2 R4 R2 R7 R1是四个8路排阻,排阻有小白点的一端对准焊盘正方形的一端 板子下方中间的+HV-是升压模块输出接入点 其左边的Out+分别接4个辉光管的阳极 为了节省板子(偷懒)没有采用常规的74HC573锁存器一组一组扫描着输出,而是采用每个引脚专门控制一位,但引脚刚好又差了一个,无奈就加了一个573,把变化最小的第一位数字和调时按钮接在上面 左上角的2032BAT是接纽扣电池的,能够实现掉电走时,但我不知为何没成功 现在程序还不是很完善,有一些bug,已知的有:在整点时小时位会延时1分钟,比如从20:59到21:00时会先跳到20:00然后一分钟后才会变为21:01,调时时有时候小时那边会一直在十内循环,不管他直接多按几轮一般能出来,调分时有时会只有个位动,好像这时候只能重启了。 焊接时一定要注意三极管引脚之间别短路了! 焊接时一定要注意三极管引脚之间别短路了! 焊接时一定要注意三极管引脚之间别短路了! 即使看着没短路也要用万用表打一下以防万一,Protel自带的三极管封装为什么引脚焊盘之间距离如此感人我也不知道 四组Out-(注意最右边那三个是一组,最左边从Q25和Q26中间引脚引出的两个引脚也是一组)各自接什么参照网上的51单片机引脚定义再对照下表:(左边第一位代表从左往右第几个辉光管,第二位表示此辉光管对应引脚的数字,右边表示单片机的对应引脚) 11 P22 12 P23 20 P34 21 P06 22 P07 23 P21 24 P20 25 P17 26 P30 27 P31 28 P32 29 P33 30 P03 31 P04 32 P02 33 P01 34 P05 35 P00 40 P16 41 P35 42 P36 43 P37 44 P10 45 P11 46 P12 47 P13 48 P14 49 P15

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值