桌面倒计时挂件: 距高考还有32天

XuefengCountdownTimer

最近写了个小软件, 主要用来提醒自己抓紧时间, 为即将到来的高考做好准备.


概述

Xuefeng Countdown Timer, 简称「X-Timer」, 通过它可以精确的计算出现在离目标时间的距离, 并以半透明的方式在桌面动态显示.

自定义文本&字体&格式

窗口或者任务栏托盘上右击->选择「设置」
Settings1
下拉框中包含了当前系统已安装的字体, 默认是等线26磅. 当然大家也可以去下载更多好看的字体, 复制到C:\Windows\Fonts\下安装

目标日期

Settings2
点击日历格子或者在输入框中输入即可设置目标日期时间, 用鼠标滚轮比较方便


Qt

跨平台

“一份代码, 到处编译”. 托QT的福, 「X-Timer」也能在Linux上运行!
CentOSXTimer
其他平台(OS X, Android…)暂未编译, 敬请期待

静态库 VS 动态库

动态(Dynamic Link) 静态(Static Link)
主文件体积 较小 通常动不动就几十M
文件数 带一大堆dll, so文件 只有一个
好处 代码复用, 方便维护* 便携

为了方便发布程序, 我曾尝试编译一份静态Qt库.
Compiling
然而遇到了问题: 报错: 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++框架, 个人认为其优点主要有:

  1. 官方文档齐全, 上手快
  2. Qt Designer开发软件界面很友好, 好多好多有趣的控件
  3. 拥有丰富的类与API, 封装的十分巧妙
  4. 相对于MFC的消息循环, Qt的信号槽用起来更简单
  5. 跨平台特性, 运行效率高
  6. 还有Qt 3D, OpenGL等一些比较牛B的模块

如果你有C/C++基础, 搞过MFC, 又希望开发跨平台的应用程序, 那么Qt的确是个不错的选择. 希望有更多小伙伴加入到Qt开发中, 也希望Qt能发展的越来越好.


下载

For Windows

提取码: 6666
如果不清楚自己系统的位数请下载32位版本

For Linux

解压后在Shell中输入sh XuefengTimer.sh, 这样可以解决依赖关系

单文件

除了上面的我还封装了两个Windows平台的单文件版本, 免安装, 运行需要MSVC2015库支持, 提取码: 2333

历史版本下载

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)报毒.

我电脑上的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小时更新一次
    • 天&时, 天&时&分 -> 每分钟更新一次
    • 天&时&分&秒 -> 每秒更新一次


    TimerInterval

鸣谢

  • 感谢@酷浪为软件反馈两枚BUG

© 2007-2016 雪峰