歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 遷移 Qt4 至 Qt5 的幾個主要環節

遷移 Qt4 至 Qt5 的幾個主要環節

日期:2017/2/28 14:53:58   编辑:Linux教程

Qt5推出一段時間了,經過了試用,雖然還存在一些問題,比如Designer 缺少 WebView 和 ActiveQt 的UI工具,此外 WebKit 的 Release 版本似乎和Visual-Studio 2012 Express 編譯器不太吃勁,老是報運行時錯誤——好在目前用到的模塊都測試過了。

1,修改路徑系統。Qt4 的 QtGUI下很多類被獨立到widgets模塊裡了,為了提高兼容性,把這些include 的抬頭全去了,直接是 #include<qapplication> ,這樣,通過 Qt += 模塊名,即可彌合4,5之間的差異。

2,添加一個宏替換,Qt ::WFlag變成 Qt5 的 WindowFlags, 小問題。

3,插件系統的修改。 新的 Q_PLUGIN_METADATA 在插件實現類的首部,代替了以往在 CPP裡Export 的模式,對遷移沒有影響。加入編譯預處理宏,判斷一下標志,決定采用哪一種方法。

4,字符串處理方式問題。目前,由於項目對中文、英文和國際化的使用較為規范,沒有遇到亂碼的問題,可以認為兼容性較好。

5,第三方依賴性

如果引用了 PostgreSQL 或 MySQL的Sql 連接插件,注意把 libpq 和 libmysql相關的庫文件拷貝到可執行文件所在文件夾下,而不是 plugins 所在的文件夾,否則盡管可以枚舉到驅動,但連接可能失敗。如果引用了OCI的插件,注意不要拷貝oci.dll 到發布文件夾,在某些情形下,會導致連接失敗。而是利用發布目的機器路徑系統上的Oracle 連接實例來獲取依賴。

6、發布程序

Qt5的plugins 文件夾中的內容,不要忘記一起發布。

總結: 經過測試, Qt4 到 5 的轉換比 Qt3->4 要平滑很多,一般的項目均可以快速遷移。

-------------------------------

順便吐糟,編譯Qt5對資源的消耗大大出乎意料,特別是那個 Webkit,Link時直接硬盤 100%狂閃,虛擬內存撐了N大,真是後悔內存沒多買一條。內存碎片化估計也很嚴重,編譯到outof mem後,重啟系統接著來才成。在GCC下也是,Mac 沒試過。

以目前Qt代碼量來看,再過幾年沒有4G的內存根本就沒法編譯。這樣想來應該不止Qt,恐怕以後很多大一點的C++項目都是如此吧——雪球滾大了,不停的要兼容舊版、加入新功能,而且重構對很多項目來說是不可能的,只能越滾越大。

Copyright © Linux教程網 All Rights Reserved