天天看點

linux将qt4更新為qt5,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?

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

原文:http://www.cnblogs.com/swarmbees/p/5621505.html