垃圾qt,毁我青春
一、前言说明
在软件开发的漫漫征途中,我与 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 成为真正优秀、易用的开发框架 。
垃圾qt,毁我青春的更多相关文章
- NOIP2016Day2T2蚯蚓(队列+坑爹洛谷毁我青春)
“卡常技术哪家强,中国OJ找洛谷” 去掉两个语句之后...95-->100 题目大意就不说了QWQ 首先65分裸优先队列,线段树,堆都可以... 100分:开三个队列,第一个存没被砍过的蚯蚓(要 ...
- bzoj_auto_submiter(辣鸡Py毁我青春系列)
听说你们的bzoj小号都很厉害? 不如试试bzoj金坷垃——bzoj_auto_submiter! 把所有的代码拖进解压后的文件夹,然后双击run.cmd. 看到有chrome浏览器窗口弹出来不要慌, ...
- Censoring【自动AC机】【水题毁我青春】【20190614】
这题简直比注水猪肉还水QAQ. 以前做过KMP的Censoring单串匹配,果断选择自动AC机w 对短串建自动AC机 长串去机子里匹配 用个栈边匹配边弹出 记得弹出一个串后把匹配点指向栈顶就ojbk ...
- [HNOI2004]Language L语言
2777: [HNOI2004]Language L语言 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10 Solved: 5[Submit][S ...
- 「2017 山东三轮集训 Day1」Flair
模拟赛的题 好神仙啊 题面在这里 之前的Solution很蠢 现在已经update.... 题意 有$ n$个商品价格均为$ 1$,您有$ m$种面值的货币,面值为$ C_1..C_m$ 每种物品你有 ...
- Fetch的使用及兼容ie的处理
Fetch 作为一个与时俱进的前端,Fetch当然应该有所了解和涉猎.如果你没有听说过Fetch,那么ajax应该不陌生吧.Fetch相当于是一个新版本的Ajax,虽然现在我们常常使用的仍是ajax, ...
- PKUWC2019游记&&WC2019游记
今天好颓,不想写代码了,写写游记 PKUWC2019游记&&WC2019游记 PKUWC2019游记 提前两天就来了中山纪中,考了两天模拟,第一天比较正常,但是可做题只有T3,第二天非 ...
- APIO 2018 游记
上接CTSC 2018 游记 day1 早上大概八九点起来洗了个澡跑到隔壁寝发现 tj 还在??? 原来昨天晚上听错名字了... 下午一起去 wfj 王府井玩,陪李总逛逛奢侈品店... 走了两三个小时 ...
- [ CodeForces 1059 D ] Nature Reserve
\(\\\) \(Description\) 你现在有\(N\)个分布在二维平面上的整点\((x_i,y_i)\),现在需要你找到一个圆,满足: 能够覆盖所有的给出点 与\(x\)轴相切 现在需要你确 ...
- [BZOJ2667][cqoi2012][kcoj]模拟工厂
题目描述 Description 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时刻时工厂的生产力加1:如果 ...
随机推荐
- Windows编程----结束进程
进程有启动就有终止,通过CreateProcess函数可以启动一个新的子进程,但是如何终结子进程呢?主要有四种方法: 通过主线程的入口函数(main函数.WinMain函数)的return关键字终止进 ...
- antd vue 嵌套表格之实现每次展开一行
在项目中遇到一个需求,就是使用嵌套子表格时,每次只展示一行,且展开一行另一行收起,直接上代码吧,顺便记录一下 这里需要注意,我们要在外层table组件添加如图三个属性,缺一不可,咳咳,不用杠我那个&l ...
- Windows 终端远程连接 Ubuntu
博客地址:https://www.cnblogs.com/zylyehuo/ 查看 ip 的方式参考以下链接 Ubuntu 下查看 ip - zylyehuo - 博客园 在 windows 终端中执 ...
- windows下jdk版本切换(bat)
1.jdk下载 Oracle官网 https://www.oracle.com/cn/ 资源->下载->Java下载 jdk当前最新版本 jdk22版本 jdk8版本 当前页面向下拉 2. ...
- eolinker响应预处理:返回结果内循环读取同类数据,设置为变量
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 场景描述: 删除(清空)购物车接口,需要传入获取的每一项 ...
- 题解:UVA12517 Digit Sum
数位 dp 模板题-- 题目大意 给你两个数 l,rl,rl,r,求出 l,rl,rl,r 之间所有数的数位和. 什么是数位和? 举个栗子,有一个数 123123123,那么他的数位和,即各个数位的和 ...
- EFCore多数据库合并查询分页
EFCore多数据库合并查询分页 参照:二个表的数据 如何做分页?_两个表排序分页_深圳市热心市民市民的博客-CSDN博客 基本情况介绍:由于系统迭代,部分收藏表在老系统的数据库,部分在新api接口的 ...
- 【记录】Docker|Ubuntu Docker 修改dockerfile换源、主机共享网络解决apt update 失败
本文测试环境:虚拟机 Ubuntu20.04 Docker20 1 修改dockerfile dockerfile第二行后面加如下内容,一键换源: RUN sed -i s:/archive.ubun ...
- 【笔记】Python3|爬虫请求 CSRF-Token 时如何获取Token、Token过期、处理 CSRF-Token 需要注意的问题及示例
CSRF-Token 机制是 Web 应用程序中常用的安全机制,它可以防止跨站请求伪造攻击,但会给爬虫造成一定的困扰.本文将介绍在使用 Python3 爬虫时,处理 CSRF-Token 机制需要 ...
- c#开发完整的Socks5代理客户端与服务端(已完结)
本文我们介绍下如何在Windows系统上开发一个代理本机流量的客户端,并且对接我们之前开发的Socks5服务端,实现整个代理的一条龙.对于Socks5代理的服务端的开发可以详见之前的文章. 目录 本机 ...