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