qt4升級到qt5的一些問題


由於最近項目使用的qt版本從qt4.8升級到qt5.5,雖然從4到5的變化不大,不過還是有許多的問題需要記錄一下,希望可以幫助到更多的人​

1、由於Qt5將大部分桌面部件移到了Qt Widgets模塊中​,因此在保護QtGui的地方需要包含QtWidgets模塊

2、亂碼問題。

    方式針對vs,由於window歷史原因,vs上使用utf8編碼時,std::string(標准串)會亂碼,因此vs上暫時使用gbk編碼。Qt5去 除了QTextCodec::setCodecForCStrings()函數,所以在涉及到在cpp中直接寫漢字常量的情況,直接使用宏 QStringLiteral包裹,例如QStringLiteral("我是漢字");如果漢字存儲於變量中則使用fromLocal8bit靜態方法。

   針對linux,直接使用gbk編碼,QString有成員方法toStdString,把QString類型的串轉換為std::string,QString::fromStdString方法把標准串轉化為QString類型

3、加入json模塊

標准jion串都是以鍵值對的形式描述的​,鍵是字符串,值可以時json對象、json數組或者json值

QJsonValue:json串的值

QJsonObject:json對象

QJsonArray:json數組​

4、​使用到QWebView等webkit相關可視部件的,Qt5單獨放到了QtWebKitWidgets模塊中,所以得加頭文件#include 

5、加入多個connect重載方法,新的connect鏈接時,會使用類型檢測,在編譯器如果不匹配會報錯​

6、QtMutimedia替換了Phonon​

 

C++接口變化

移植C++應用 qt 5

 

順道說一句:qt可以使用QAxWidget或者QWebView​來嵌入web頁面,但是qt的ui刷新時在主線程中刷新的,因此,當web窗口刷新時,整個app都會假死,建議使用cef來嵌入瀏覽器,功能強大,不過動態庫很大


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM