一、吐槽總結
搞Qt開發十幾年了,最初從Qt4.6開始,一直追新到現在的6.7版本,中間經歷過無數的血的教訓,簡直是又愛又恨。其實Qt挺好的,但是還是要忍不住吐槽一下,本人還是希望Qt發展的越來越好,這樣我的飯碗就能保住了。
1. 版本衆多
- Qt的版本多到你數都數不清,多到你開始懷疑人生。
- Qt版本從4.6開始到6.8,光這一階段就無數版本。
- 編譯器從msvc編譯器到mingw編譯器再到gcc編譯器等。
- 位數從32位到64位。
- 操作系統有windows、linux、mac、android、ios等系統,還有各種嵌入式linux,現在又多了國產linux。
- msvc版本還必須安裝對應的 vs2005、vs2008、vs2010、vs2013、vs015、vs2017、vs2019、vs2022等。
- mingw版本必須安裝不小於某個版本號的mingw編譯器。
- 很多人一看官網的下載鏈接,就蒙圈了,到底應該選擇哪一個進行下載開發呢?對初學者真不友好。
- 爲了能夠做到開發跨平臺應用,不得不安裝多塊硬盤和多個操作系統,虛擬機的坑使得必須安裝真機環境才能測試出真實效果。
- 最基本的你必須安裝windows XP,WIN7 32位 64位,WIN10 32位 64位,ubuntu 14.04 15.04 16.04。
- 嵌入式開發還得搞各種交叉編譯環境,尤其記憶最深刻的是在2012年搭建交叉編譯環境花了3周時間。
- 搞Qt安卓開發最好用乾淨的系統, 本人試過N次,在原有的安裝了很多東西的電腦上搭建Qt android開發環境死活不成功,必須全新安裝的操作系統纔可以,所以單獨搞了一塊硬盤用來Qt開發android。
- 本人就在四塊硬盤上安裝了十幾個操作系統,安裝了至少30個Qt開發環境,我的乖乖。
- 大概從2020年開始,Qt飆版本的速度,超過了各位工資的漲幅速度。
2. 各種亂碼
- Qt各種亂碼問題,困擾Qter一生,尤其是Qt4時代;
- 有時候解決了界面亂碼,輸出又出亂碼了;
- 解決了輸出亂碼,界面又亂碼了;
- 界面不亂碼了,結果qdebug打印又亂碼;
- mingw不亂碼了,結果msvc又亂碼,關鍵是程序一模一樣。
- 亂碼提示只有上帝能看懂,都是些火星文,非常坑爹;
- 聲明下:這不只是Qt的問題,這是IT界的問題,什麼utf-8帶BOM,什麼MSVC默認是GBK編碼,什麼回車換行符\r\n。
- 幸運的是,大概從Qt5以後,亂碼問題少很多。
3. 接口變動
- Qt最近十幾年大概有3個大版本,分別是Qt4、Qt5、Qt6,按照目前飆版本的速度,預計不到2年還有個Qt7出生。
- 版本接口變動最大的是Qt4到Qt5,其次是Qt5到Qt6,直覺告訴我,Qt6和Qt7接口變動不會很大,應該很小。
- 接口變動是避免不了的事情,但是同一個函數的命名變來變去,這就有點接受不了。
- Qt內置方法的變動,讓一些喜歡追逐新版本Qt開發環境的Qter們抓耳撓腮,一下子toAscii,一下子就沒了,一下子QSound在QtGUI,一下子移到了multimedia中。打印模塊也是移來移去,其他的就不細數了。
- 瀏覽器內核變來變去,以前webkit好好的,後面居然拋棄了,我勒個去,始亂終棄啊!你讓以前依賴webkit內核的項目怎麼換啊,改來改去的。
- 大概從Qt5.6版本開始集成的是webengine谷歌內核,最起碼有,也能接受,但是這逼不支持mingw編譯器。而Qt默認自帶編譯器就是mingw,意味着默認就不能用瀏覽器控件。這下搞得,哎。
- 高版本開發環境居然不兼容低版本,這可是犯了大忌啊。
- 每一個巨大版本的變動,意味着學習成本上升。
- 網上大量的Qt4和Qt5時代的代碼,讓很多Qt4時代的代碼不能正常在Qt5環境中編譯,導致網上各種初學者下載到的Qt4代碼編譯沒有一個通過的人喪失信心,甚至又開始懷疑人生,網上都是騙人的又一次浮現腦海。
- 對標c#和java,基本上都是很容易的升級大版本,因爲接口幾乎就是一致的。
4. 打包發佈
- Qt發佈也困擾了不少的初學者,尤其是高達幾十兆的運行庫文件,更是崩潰至極。
- 不是提示缺少某個文件,就是那邊少了數據庫插件,甚至蹦蹦蹦的彈框。
- 最可恨可氣無奈的是,明明某些電腦可以正常運行,某些電腦死活跑不成功。
- 後面出了個deployqt工具要方便很多,以前沒有這個工具的時候,簡易一頭霧水。
- 有錯誤提示還好,關鍵是很多時候直接無法運行,啥提示都沒有,只能慢慢查。
- 對標c#程序,只需要安裝個.NET框架就行,非常方便。
5. 兼容性
- Qt就是因爲兼容性好,所以最後做到了兼容性差。
- 總的來說其實就是基礎功能兼容性好,平臺相關的一些特性兼容性差。
- 最大吐槽就屬於高分屏縮放的兼容性問題,到現在Qt6基本還沒解決,看QtCreator本身的兼容性就知道。
- qml兼容性巨坑,各種的不穩定,直到5.7版本開始纔好點,很多老式電腦無法正常運行。
- 在Qt6以前,那個qml設計器更是慘不忍睹無法直視,字體細小難看,還必須放大鏡才能看清是什麼,既然做了就做好點,不然怎麼讓開發者用呢?
- qml開發的商業產品或者作品,到現在也沒有看到幾個好的,移動端的更加稀少。沒有看到一個讓人驚豔的作品。
6. 網友補充
- 有時候debug正常,release又崩潰。可能是路徑問題?
- 集成開發環境QtCreator中文翻譯不全,一會中文一會英文,看起來非常彆扭。
- 長期用Qt會產生嚴重的依賴症,什麼都Qt給你封裝好了。長此以往,變成Qt程序員而非C++程序員。
- qml組件中很多控件是半成品,嵌套組件下Qml設計器很難用。
- QtCreator在debug調試非常雞肋,而且容易崩潰。