最近一直忙于新项目Qt客户端程序的开发工作,对于整个项目开发中的一些坑点做一些总结,余惟愿诸友远避之。

1、关于UI界面开发。我的建议是,能用贴图就贴图。尽管我们知道Qt提供了“强大”的qss功能,但是如果你想通过qss原封不动的实现ui效果,付出的时间和精力结对是翻倍的。另外,前提还得是你对qss非常熟悉,甚至精通。如果你只是懂一点皮毛,放弃吧。额外说明,css和qss是有略微区别的,某些默认的样式区别更大。建议老老实实贴图。有时候幸福和不幸福,只在你的一个简单选择~ 别逞强。当然如果是定制精美的UI控件,保证充裕的开发时间,qss还是值得一试的(既然都时间充裕了,那为何不用pianter去绘制~)

2、Qt开发客户端程序其实已经是一个比较完整的流程和体系。大概涉及到如下的几个点:
(1)程序的安装卸载。不可避免的我们都要为客户端制作发布包。现在的发布包其实一般只有两种,绿色免安装(给用户就直接点击可运行的),还有一种就是需要制作安装向导,引导客户进行程序的安装。工具的话网上开源的免费的诸多。只是善意的提示大家,注意防毒~ 但是,我们在这里说肯定不只是拿来可用就行。通常正式的产品对于安装卸载程序的定制要求是比较高的,包括UI定制,功能定制等。所以,不管是你使用何种工具,一定要非常精通,一招鲜吃遍天就好。
常用的打包工具有nsis、inno setup,Qt Installer Framework (简称QIFW)、Windows Installer XML(简称WIX),各有各的强大,不过想要掌握等同于你要学习一门新的语言。Qt开发者我是强烈建议学习下 QIFW框架的,定制界面的话需要掌握下JS~(重点了解下QIFW是如何实现打包这个功能的)
但是,作为一个纯粹的Qt开发者,我更建议您重今天开始自己使用Qt开发属于自己的打包工具,也别想得太复杂。一个打包工具无非三个部分:
打包部分。将install安装向导、unistall卸载向导、以及application 文件打包。(这也是我建议您去了解下QIFW源码中这部分实现的原因)
install安装向导。说白了就是一个带UI的应用程序,用于引导用户进行安装应用程序。那么他的核心功能就是
解包:将application和unistall 解压到用户指定的安装目录下
引导:用户查看licence、选择安装路径等等。当然也有很多细节,如下:
>>> 譬如系统判断(支持哪些操作系统)
>>> 权限判断(是否需要使用管理员权限启动)、
>>> 安装判断(首次安装、覆盖安装等?)
>>> 运行状态判断(是否程序已经在运行过程中)
>>> 错误提示信息
>>> 生成桌面快捷方式、开始菜单中的快速启动项
>>> 开机自启动
>>> 安装过程中的安装进度展示
>>> 安装完成后用户选择“立即体验”之类的可以启动安装目录下的目标应用程序或者提示用户需要“重启计算机”,并完成重启操作

Uninstall 卸载程序部分。很明确的任务就是卸载应用和删除相关资源。包括桌面快捷方式、快速启动项、注册表信息(安装版本信息等、开机自启动项)、删除安装目录下的文件等等
总之一个原则,干干净净的安装,干干净净的卸载~
ps:博主最近自己用纯Qt实现了一套,有需求的朋友可以私聊~

(2)现代的Qt桌面客户端应用程序不可避免的要使用的无边框窗体。建议自己参考git上最棒的无边框窗体,或者自己独立实现一套无边框窗体组件,完美的实现一次,享用很多年~ 当然做的很棒,欢迎开源分享给大家,造福Qter。无边框窗体要注意几个细节:
> 最大化/向下还原、最小化、关闭基本功能的实现
> 支持可自定义的拉伸、移动;最好支持边界触碰,支持自动全屏,半屏;窗体在最大化状态移动时,支持自动还原到normal状态,对应
> 支持跨平台的实现~(当然有人肯定会说应用风格不是最好应该跟系统ui风格一致吗,别较真,我们只谈需求和技术实现)

(3)支持应用程序的自动升级更新。应用的更新包含自动更新和用户选择更新,细分又包含全量更新和增量更新。技术实现上又包含自更新和应用与引导程序之间的相互更新。参考比较国内大型的桌面软件,我们会发现其实自更新以及使用引导程序更新这两种方式都用的比较多~ 那自然,做桌面客户端一定得好好思考下如何实现这两种模式。
其次,更新下载又可以分为预下载和正式发布强制更新下载。预下载要包含限流、限更新数;更新较大的安装包还要考虑到是否支持断电续传的问题~
大家自己去发散的思考一下吧 ~ 博主思考不足的地方也希望大家在留言区群策群力,不吝指教~

(4)日志系统。一个好的项目必不可少的就是日志系统,Qt客户端的开发自然也必不可少。Qt自带Qtlog模块,当然我们还可以使用log4cpp等其他主流的日志模块。集成到我们的框架中,开新项目时候就不必反复弄了~

不知不觉中午了,出去搞点好吃的~ 下篇在跟大家聊聊我所经历的桌面Qt客户端的常用的零零散散一些技术点~

关于Qt客户端程序开发的一些思考相关推荐

  1. 嵌入式客户端程序开发大汇总

    先不说嵌入式客户端程序开发,先看发展最好的客户端程序开发领域:PC端(Win.IOS).浏览器.移动端(Android.IOS).这些客户端开发程序员人数众多.生产力极高的工具.良好的生态环境.客户端 ...

  2. TCP 客户端程序开发

    TCP 客户端程序开发 1. 开发 TCP 客户端程序开发步骤回顾 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2. socket 类的介绍 导入 socket ...

  3. ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services

    ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services 1. 专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文 ...

  4. ONVIF协议网络摄像机(IPC)客户端程序开发(2):第一次使用IPC摄像头

    ONVIF协议网络摄像机(IPC)客户端程序开发(2):第一次使用IPC摄像头 1. 专栏导读 2. 适合读者 本文只适合第一次拿到IPC摄像头,很好奇该怎么使用IPC的读者.已经玩过IPC的,可以略 ...

  5. ONVIF协议网络摄像机(IPC)客户端程序开发(8):获取设备基本信息

    ONVIF协议网络摄像机(IPC)客户端程序开发(8):获取设备基本信息 1 专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文章讲过的知识点(或代 ...

  6. TCP 客户端程序开发步骤

    TCP 客户端程序开发 1. 开发 TCP 客户端程序开发步骤回顾 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2. socket 类的介绍 导入 socket ...

  7. ONVIF协议网络摄像机(IPC)客户端程序开发使用gSOAP生成ONVIF框架代码(C++)03-->Windows

    其它的不多说,直接开始步骤. 我的版本是2.8.109,目前最新版本. 实际上,onvif的源码是兼容Linux.Windows版本的,例如如果你已经在这篇文章ONVIF协议网络摄像机(IPC)客户端 ...

  8. ONVIF协议网络摄像机(IPC)客户端程序开发(5):门外汉理解ONVIF协议

    1. 专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文章讲过的知识点(或代码段),后面文章不会赘述.为了节省篇幅,突出重点,在文章中展示的示例代码 ...

  9. 网络编程之TCP客户端程序开发

    网络编程之TCP客户端程序开发 1. 开发 TCP 客户端程序开发步骤 2. socket 类的介绍 3. TCP 客户端程序开发示例代码 4. 小结 1. 开发 TCP 客户端程序开发步骤 创建客户 ...

最新文章

  1. 综述 | 森林微生物组:多样性,复杂性和动态变化(IF:11.3)
  2. WEB前端性能优化小结
  3. 学电脑从新手到高手_小白如何学手绘插画?新手到高手必学的四套教程【614期】...
  4. 王小云计算机,王小云学者主页-科技工作者之家
  5. [数论系列一]C Looooops,跳跳棋,The Luckiest number,CF906D Power Tower,Minimal Power of Prime,仪仗队,LCMSUM
  6. BGP——软收敛(讲解+配置命令)
  7. miniMobile(手机)
  8. 基于python+boostrap的学校图书馆管理系统
  9. 关于DNF的多媒体包NPK文件的那些事儿(1)
  10. udhcpc 的使用
  11. COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
  12. Excel电子表格操作
  13. ElementUI导航菜单嵌套多级折叠面板的小箭头图标bug
  14. android没有adm_这可能是安卓平台上最好的下载器:ADM
  15. 经典4电阻差动放大器
  16. cadence 通孔焊盘_通孔焊盘内走线不报错
  17. 2015年找工作总结
  18. 历时半年,我的IT编程自学平台终于来了
  19. esp8266网络自动对时 串口字符连接 病显示 12864i2c u8g2库
  20. doceker 安装MySQL

热门文章

  1. 365道Java高频面试复习题,助你吊打面试官
  2. Linux下为何8g的内存实际空间只有7g
  3. DNA双螺旋结构发现70周年:自我复制的生命演化史!
  4. “股神”巴菲特的六大投资良策
  5. 计算机绝版好书转让!
  6. HDU - 5452 Minimum Cut LCA + imos和
  7. C语言学习中遇到的小知识点
  8. python numpy 分离与合并复数矩阵实部虚部的方法
  9. 游戏架构 游戏架构设计(12)
  10. 膜拜大牛!蓝桥杯java历年真题