最近写了个小软件, 主要用来提醒自己抓紧时间, 为即将到来的高考做好准备.
概述
Xuefeng Countdown Timer, 简称「X-Timer」, 通过它可以精确的计算出现在离目标时间的距离, 并以半透明的方式在桌面动态显示.
自定义文本&字体&格式
窗口或者任务栏托盘上右击->选择「设置」
下拉框中包含了当前系统已安装的字体, 默认是等线26磅. 当然大家也可以去下载更多好看的字体, 复制到C:\Windows\Fonts\下安装
目标日期
点击日历格子或者在输入框中输入即可设置目标日期时间, 用鼠标滚轮比较方便
Qt
跨平台
“一份代码, 到处编译”. 托QT的福, 「X-Timer」也能在Linux上运行!
其他平台(OS X, Android…)暂未编译, 敬请期待
静态库 VS 动态库
动态(Dynamic Link) | 静态(Static Link) | |
---|---|---|
主文件体积 | 较小 | 通常动不动就几十M |
文件数 | 带一大堆dll, so文件 | 只有一个 |
好处 | 代码复用, 方便维护* | 便携 |
为了方便发布程序, 我曾尝试编译一份静态Qt库.
然而遇到了问题: 报错: Multiple Definition(重复定义). 有人向官方反馈过这个BUG: https://bugreports.qt.io/browse/QTBUG-51745.
算了..就用动态库吧.
记录
前面那问题无解, 此外还有:
- 莫名奇妙的报*.obj连接错误, 搞了半天最后清理一下项目的build目录解决…
- 修改*.ui界面文件后, 同样需要清理项目的build临时文件
- Qt Creator + MSVS2015环境, 不能调试, 需下载WinDbg, 或者安装插件后使用VS作为IDE
- CentOS下无法编译,
yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel
解决 - 动态库编译的程序在未安装QT的电脑上不能运行, 解决方法: Windows上用Qt自带的windeployqt.exe以及Linux上用系统内置的ldd工具来检测依赖关系, 把依赖的dll或者so文件也一同打包
推荐
最后, 我来安利一下这个叫做Qt的C++框架, 个人认为其优点主要有:
- 官方文档齐全, 上手快
- Qt Designer开发软件界面很友好, 好多好多有趣的控件
- 拥有丰富的类与API, 封装的十分巧妙
- 相对于MFC的消息循环, Qt的信号槽用起来更简单
- 跨平台特性, 运行效率高
- 还有Qt 3D, OpenGL等一些比较牛B的模块
如果你有C/C++基础, 搞过MFC, 又希望开发跨平台的应用程序, 那么Qt的确是个不错的选择. 希望有更多小伙伴加入到Qt开发中, 也希望Qt能发展的越来越好.
下载
For Windows
- 32位: Direct Download Download from BaiduCloud
- 64位: Download
提取码: 6666
如果不清楚自己系统的位数请下载32位版本
For Linux
- 64位: Download
解压后在Shell中输入sh XuefengTimer.sh, 这样可以解决依赖关系
单文件
除了上面的我还封装了两个Windows平台的单文件版本, 免安装, 运行需要MSVC2015库支持, 提取码: 2333
历史版本下载
- Version 1.0: Download
提取码: 6666
SHA-1效验
X-Timer_1.1_Windows_x86_Setup_With_VC2015.exe
1C564B82AD7806A3E74258FC655E02C286C4A28C
X-Timer_1.1_Windows_x64_Setup_With_VC2015.exe
088CB6BF839A41EE3C645D41ABD18E6E9042C970
XuefengTimer_1.1_Windows_x86_Boxed.exe
7692E393DDDD24569F1DAD75389341B7E12169CA
XuefengTimer_1.1_Windows_x64_Boxed.exe
12A91B528E649D2030401624C81366EE6814CD11
XuefengTimer_1.1_Linux_x64.tar.gz
9381664CD610A922C379F9D0788FA3E9EF493D8D
安全分析
为了极致性能, 软件我没有加壳. 但据网友反馈仍有个别杀软(360)报毒.
- VirusTotal: 32-Bit (0/56) 64-Bit (1/56)
- VirusBook: 32-Bit (0/23) 64-Bit (0/23)
- Tencent Habo: 32-Bit 64-Bit
- Kingsoft FireEye: 32-Bit 64-Bit
我电脑上的NOD32没有对「X-Timer」表示任何怀疑, 然而在线检测后发现:
- 几家国外杀软(Symantec, BitDefender)对32位主程序报告Gen:Variant.Kazy.734454
- 某数字卫士对64位安装包报告HEUR/QVM06.1.0000.Malware.Gen.
唉, 我也只能以一名高中生的名义来保证软件的纯洁性了.
更新日志
v1.0 [2016-05-05]
- First Release
v1.1 [2016-05-12]
- Fixed Bug: Cannot display the DAY number correctly when it’s greater than 99
已知Bug
- 选项「窗口置顶」需要重启软件才能生效
特定情况下无法正常显示天数[Fixed in Version 1.1]
Q&A
- 「X-Timer」时间更新不及时
然而这并不是软件出了问题. _(:3 」∠)_ 为了优化CPU资源占用, 我调整了时间刷新频率, 使其与设置中的”倒计时格式”相对应:
- 天 -> 每隔12小时更新一次
- 天&时, 天&时&分 -> 每分钟更新一次
- 天&时&分&秒 -> 每秒更新一次
鸣谢
- 感谢@酷浪为软件反馈两枚BUG
© 2007-2016 雪峰