Qt血的教訓/細數Qt開發的各種坑/又愛又恨/歡迎圍觀留言評論

一、吐槽總結

搞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調試非常雞肋,而且容易崩潰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章