一、前言说明
在软件开发的漫漫征途中,我与 Qt 的邂逅本以为是一场美妙的合作,然而,现实却给了我沉重的一击。"垃圾 qt,毁我青春",这句看似过激的话语,实则饱含了我在 Qt 开发之路上的无数辛酸与无奈。
二、版本问题
- Qt 的版本乱象,堪称开发者的噩梦。从 4.6 到 6.8,甚至可能更快迎来的 Qt7,版本数量多如繁星。
- 不仅如此,位数从 32 位跨越到 64 位,适配的操作系统涵盖 windows、linux、mac、android、ios 等,还有各式各样的嵌入式 linux 以及新兴的国产 linux。
- msvc 版本需要对应安装 vs2005、vs2008、vs2010 等不同年份的 Visual Studio;mingw 版本也得安装不低于特定版本号的 mingw 编译器。
- 这错综复杂的版本组合,让开发者仿佛置身于迷宫之中,难以找到正确的方向。
- 为了实现跨平台应用开发,不得不配备多块硬盘,安装多个操作系统。虚拟机的诸多问题,更是迫使我们搭建真机环境进行测试。
- 仅基础的操作系统,就需要安装 windows XP,WIN7 的 32 位和 64 位,WIN10 的 32 位和 64 位,以及 ubuntu 的 14.04、15.04、16.04 等版本。
- 嵌入式开发中的交叉编译环境搭建,更是让人望而生畏。还记得 2012 年,为了搭建交叉编译环境,我耗费了整整 3 周的时间,那是一段充满煎熬与挫折的经历。
- 而在 Qt 安卓开发中,环境搭建的难度也不容小觑。在原有安装了众多软件的电脑上搭建开发环境,往往以失败告终,必须使用全新安装的操作系统才行。
- 无奈之下,我只好单独准备一块硬盘用于 Qt 安卓开发,这无疑增加了开发的成本与复杂性。
三、乱码问题
- 乱码问题,如同 Qt 开发中的顽疾,长期困扰着开发者。
- 在 Qt4 时代,这个问题尤为严重。常常是好不容易解决了界面乱码,输出却又出现乱码;解决了输出乱码,界面又再次乱码。
- qdebug 打印也时常出现乱码情况,而且 mingw 和 msvc 环境下,同样的程序可能会出现不同的乱码问题。
- 乱码提示往往晦涩难懂,宛如火星文,让人摸不着头脑,实在是坑爹。
- 幸运的是,从 Qt5 之后,乱码问题有所缓解,但仍不时出现,给开发过程带来诸多不便。
四、方法变动
- Qt 内置方法的频繁变动,也让开发者苦不堪言。一会儿 toAscii 方法存在,一会儿又消失不见;
- QSound 原本在 QtGUI 中,后来却移到了 multimedia 中。
- 浏览器内核也变来变去,原本稳定好用的 webkit 被抛弃,这种始乱终弃的做法,让开发者难以适从。
- 高版本开发环境对低版本的不兼容,更是大忌。
- 每一次大版本的更新,都意味着学习成本的大幅上升。
- 网上大量的 Qt4 和 Qt5 时代的代码,在新的开发环境中无法正常编译,导致许多初学者下载代码后无法成功运行,从而丧失信心,甚至开始怀疑人生,觉得网上的资源都是骗人的。
五、发布问题
- Qt 发布过程同样问题重重。对于初学者而言,高达几十兆的运行库文件,无疑是沉重的负担,令人崩溃。
- 更可恨的是,有些程序在某些电脑上可以正常运行,在另一些电脑上却死活跑不起来。
- 有错误提示还好,可很多时候直接无法运行,且没有任何提示,只能花费大量时间慢慢排查问题。
- Qt 虽号称兼容性好,但实际上在一些平台相关特性方面,兼容性却很差。
- 例如高分屏缩放的兼容性问题,直到 Qt6 都尚未得到妥善解决,看看 QtCreator 本身在高分屏上的显示效果就可见一斑。
- qml 的兼容性也存在巨大的坑,极不稳定,在老式电脑上常常无法正常运行。
- 在 Qt6 以前,qml 设计器更是糟糕,字体细小难看,操作极为不便,几乎无法使用。
- 而且,qml 开发的商业产品或作品数量稀少,在移动端更是凤毛麟角。
- 开发过程中还经常出现 debug 正常,release 却崩溃的情况,让人防不胜防。
六、严重依赖
- 长期使用 Qt 进行开发,还容易产生严重的依赖症。
- Qt 将许多功能都进行了封装,虽然提高了开发效率,但也让开发者逐渐失去了对底层代码的掌控能力,长此以往,可能会变成只会使用 Qt 的程序员,而非真正的 C++ 程序员。
- qml 组件中的许多控件也不够完善,处于半成品状态,嵌套组件下的 Qml 设计器更是难以使用。
- 此外,QtCreator 在 debug 调试方面表现不佳,功能鸡肋且容易崩溃,进一步影响了开发效率与体验。
七、结束的话
回首在 Qt 开发上耗费的时光,心中满是悔恨与无奈。它耗费了我大量的青春与精力,却并未给我带来与之匹配的收获与成就。"垃圾 qt,毁我青春",这不仅仅是一句抱怨,更是我在 Qt 开发之路上历经磨难后的肺腑之言。希望 Qt 的开发者们能够重视这些问题,进行改进与优化,让 Qt 成为真正优秀、易用的开发框架 。
