支持Linux的跨平台客户端开发

前言

之前对比过一些客户端开发的技术对比

https://www.psvmc.cn/article/2019-10-18-windows-program-develop.html

当时主要的平台是Windows,所以最终选择的是微软的WPF。

现在想考虑支持Linux和MacOS,并且支持多窗口的技术。

目前跨平台桌面开发技术有以下几种

  • Qt 开发效率一般,但是性能不错。
  • Electron 界面好看开发快,就是性能不咋行。
  • Flutter 不建议,不能开发多窗口的桌面应用。

正好最近微信的Linux版本也上线了,据反映,体验还是不错的,也给我们一个参考。

微信使用的是Qt,QQ使用的是Electron,这也是比较成熟的两个跨平台的开发技术,但是看评价微信的体验比QQ好很多。

微信的主界面是 Qt,但 WEB渲染的部分是一个完全独立的程序,是 GTK 的。

从操作体验上

微信大概率使用的是Qt Widgets。

Qt Widgets还是Qt Quick

Qt Quick Application(QML):

适合现代触屏UI、动态效果,快速开发,跨平台一致性好。

适用于移动优先、视觉要求高的项目。

Qt Widgets Application(C++):

擅长经典桌面元素,提供丰富控件,深度集成底层功能,适合构建复杂桌面应用、高性能计算或紧密配合C++代码。

选择依据:平台目标、开发效率、团队技能、未来规划。

最直观的判断标准

  • Qt Widgets 最大的优势就是内存占用更低。
  • 如果你的软件最终是手指操作的多,就用qml,如果是鼠标操作的多,就选择widget。
  • PC端更推荐Qt Widgets,手机端更推荐Qt Quick。
  • Qt Widgets是模板和样式分离的,Qt Quick是不分离的。
  • Qt Quick窗口在拖拽的时候会出现短暂的白边。

结论

最终个人建议做PC开发还是使用Qt Widgets更好。