Qt5.4中遇到找不到頭文件等。

重新學習Qt時,重裝了Qt5.4,當運行Hello World例子時,遇到了下列的狀況  c++

<span style="font-size:18px;">#include <QApplication> #include <QDialog> #include <QLabel> int main(int argc, char *argv[]) {  QApplication a(argc,argv);  QDialog w;  QLabel label(&w);  label.setText("Hello World! i am QT");  w.show();  return a.exec(); } </span> 

提示錯誤找不到:web

#include <QApplication>
#include <QDialog>
#include <QLabel>
一直糾結了快一天網上也找不到答案,摸索了好久,最後發現是出現緣由:Qt5後再也不用QtGui模塊,而是使用QtWidgets模塊。
因此在.pro文件中添加
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
完美解決問題。。。。

順便總結相關問題:windows

遇到的問題以下:框架

1.  因爲Qt5將大部分桌面部件移到了Qt Widgets模塊中,因此在.pro中要增長下面一行函數

QT += widgets學習

2. 程序中使用了OWC10,用到了ActiveQt,原來的作法是在.pro中加CONFIG += qaxcontainer,如今須要改爲ui

QT += axcontainer編碼

固然了,原來的CONFIG += qaxcontainer也將去除spa

3. 爲了充分使用C++11特性,在.pro中加下面一行c++11

CONFIG += c++11

4. 在源文件中,凡是涉及到原QtGui中可視部件的,全要修改頭文件引用,或者增長QtWidgets頭文件,好比:

#include <QtGui/QPushButton>  要改爲  #include <QPushButton>  或者  #include <QtWidgets/QPushButton>

在之前使用#include <QtGui>的地方,要加上 #include <QtWidgets>

5. 因爲Qt5去除了QTextCodec::setCodecForCStrings()函數,因此在涉及到在cpp中直接寫漢字的狀況,有以下兩種修改方法:

a)  若是之前的源文件編碼是GBK的,則須要使用QString::fromLocal8Bit()函數將原來的漢字括起來;或者直接將源 文件編碼轉換成UTF-8的(缺點是MSVC編譯器不能方便的使用了)。我使用了使用QString::fromLocal8Bit()來調用的方式(當 然了,另寫便捷函數或宏來處理)

b) 若是之前的源文件編碼是UTF-8的,則什麼都不用動。

6. 之前使用QDesktopServices::storageLocation(QDesktopServices::xxxx)來獲取一些系統目錄,如今則要改爲

QStandardPaths::writableLocation(QStandardPaths::xxxx)

7. 之前調用QFileDialog::getSaveFileName()時,若是在Windows下使用Native Dialog形式 指定文件名,則能正常顯示,現在Qt5不能正常顯示文件名。因此將它的後兩個參數加上了,即 QFileDialog::getSaveFileName(xxx, xxx, xxx, xxx, 0, QFileDialog::DontUseNativeDialog), 這樣就正常了,只是它的對話框不是系統形式的,暫且將就吧。

8. 還有,Qt5解決了ui_qaxselect.h文件的問題。在Qt4時代,使用ActiveQt時,老提示沒有這個文件,須要本身找到源代碼手工uic qaxselect.ui > ui_qaxselect.h來生成一下,Qt5中則解決了該問題。

9.使用到打印相關的類,Qt5單獨放到了QtPrintSupport模塊中,因此得加頭文件#include <QtPrintSupport>,在.pro中要加QT += printsupport

10. 使用到QWebPage等webkit相關可視部件的,Qt5單獨放到了QtWebKitWidgets模塊中,因此得加頭文件#include <QtWebKitWidgets>,在.pro中要加QT += webkitwidgets

11. Qt4中的cleanlooks、plastique、cde、motif等主題樣式沒有,新加了個fusion,好吧,問題是個人一 個項目框架使用的是cleanlooks主題樣式而後加自定義樣式表,這下可好,升級Qt5後,樣子有的就與windowsvista或fusion不相 符或有缺陷,得調整一下了。因此,對主題樣式依賴比較嚴重的程序,要衡量一下是否要升級到Qt5了。

12. .pro文件中的TARGET在Qt4(qmake v2)中是能夠不填寫的,那麼它就從自動採用.pro文件名字,而在Qt5中(qmake v3)這個TARGET不可不寫。

13. Q_WS_XX的宏不可用了,使用Q_OS_XX代替.

相關文章
相關標籤/搜索