溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

QT4--QT5 升級問題 再談

發(fā)布時(shí)間:2020-07-06 08:53:09 來源:網(wǎng)絡(luò) 閱讀:2280 作者:WZM3558862 欄目:移動開發(fā)

    Qt 5的第二個(gè)重大版本Qt 5.2的beta版終于發(fā)布了,Qt 5.2是官方一再強(qiáng)調(diào)開發(fā)Android要使用的版本。經(jīng)過了近一年的等待,這次終于可以完成夙愿,繼續(xù)更新Qt系列教程了。在后面的教程中會盡量涉及大家經(jīng)常問到、急需解決的問題,也會盡可能的把最新的技術(shù)和最炫的界面效果展示給大家。

       這里也請大家把心態(tài)放平穩(wěn)一些,是說大家學(xué)習(xí)的心態(tài),也是說我寫教程的心態(tài)。通過這幾年的經(jīng)歷,我發(fā)現(xiàn),凡事不能急功近利,只有平常心才能出真知,只有用最樸實(shí)(有時(shí)候可能顯得不專業(yè))的語言來描述講解一個(gè)問題,才會讓更多人容易讀懂,才會得到更多人的贊譽(yù)。這里不得不說,寫教程只是我在業(yè)余時(shí)間做的事情,我的技術(shù)水平也沒有一些網(wǎng)友想的那么牛叉,之所以還要一直寫下去,是因?yàn)橛心敲炊嗑W(wǎng)友的支持和肯定。也是在今天,我得知《Qt Creator快速入門》已經(jīng)售罄,這距該書出版還不到一年半的時(shí)間。這里再次謝謝那些支持我的朋友,我會通過更好的教程和開源作品來感謝大家一直以來的支持!





環(huán)境:Windows 7 + Qt 5.2.0+QtCreator 3.0





目錄


一、軟件安裝

二、運(yùn)行一個(gè)Qt 4程序

三、發(fā)布Qt 5程序





內(nèi)容概要



本節(jié)講述的內(nèi)容主要有三點(diǎn):



第一,一般的Qt 4程序要在Qt 5上編譯,需要注意:

1.main.cpp文件中的#include <QtGui/QApplication>修改為#include <QApplication>

2..pro項(xiàng)目文件中添加:greaterThan(QT_MAJOR_VERSION, 4): QT += widgets



第二,在Qt 5中設(shè)置應(yīng)用程序圖標(biāo),需要注意:

1..ico圖標(biāo)文件放到項(xiàng)目源碼目錄

2..pro文件中添加:RC_ICONS = myico.icomyico.ico就是自己圖標(biāo)文件的名字)



第三,發(fā)布Qt 5程序時(shí),除了必要的dll文件以外,還需要將plugins中的platforms目錄復(fù)制過來,而里面只要保留qminimal.dllqwindows.dll兩個(gè)文件即可。






正文



一、軟件安裝



1.下載并安裝Qt 5.2



首先到Qt官方下載頁面:

http://download.qt-project.org/development_releases/qt/5.2/5.2.0-beta1/


因?yàn)槭窃?/span>Windows下,所以下載含有Android庫的Windows版本,具體文件是:

qt-windows-opensource-5.2.0-beta1-android-x86-win32-offline.exe


這個(gè)安裝包中已經(jīng)包含了所有需要的工具(例如最新版的Qt Creator 3.0,當(dāng)然要開發(fā)Android還是需要自己添加文件的),我們只需要下載這一個(gè)文件即可。


下載完成后,雙擊運(yùn)行。這里一般不需要做任何設(shè)置,直接點(diǎn)擊下一步直到軟件安裝完成。最后便自動打開了我們期盼已久的Qt Creator 3.0歡迎界面,如下圖所示。







可以看到,歡迎界面和以前布局有了一些變動,更加清晰明了。但總體來說,整個(gè)界面及內(nèi)容沒有什么變化。




2.運(yùn)行一個(gè)例子



我們點(diǎn)擊“示例”,然后選擇一個(gè)例子先來運(yùn)行一下,比如這里選擇Flickr View Example,這時(shí)會打開該程序并跳轉(zhuǎn)到其幫助文檔界面,如下圖所示。






可以回到編輯模式簡單看一下程序代碼,然后點(diǎn)擊運(yùn)行按鈕運(yùn)行該程序,效果如下圖所示。






這是個(gè)非常漂亮的圖片瀏覽程序,是用qml編寫的,不過這個(gè)并不是這里講述的重點(diǎn),非常先進(jìn)且極具未來感的Qt Quick技術(shù)和QML語言會在后面專門的章節(jié)中詳細(xì)講解。這里要說的是,Qt 5已經(jīng)是一個(gè)SDK了,它包含了開發(fā)所需要的大部分工具,包括了Qt Creator和MinGW,并做好了關(guān)聯(lián)設(shè)置,所以我們可以看到,現(xiàn)在無需再像使用Qt 4.8那樣手動設(shè)置就可以直接編譯運(yùn)行程序。




3.安裝調(diào)試器



我們選擇“工具”->“選項(xiàng)”菜單項(xiàng),然后打開“構(gòu)建和運(yùn)行”頁面中的構(gòu)建套件,可以看到,這里已經(jīng)自動檢測到了一個(gè)構(gòu)建套件。如下圖所示。






不過,現(xiàn)在在構(gòu)建套件前面有個(gè)×××的感嘆號,將光標(biāo)移動到上面可以看到提示沒有設(shè)置調(diào)試器。如下圖所示。






在沒有調(diào)試器的情況下,是無法啟動調(diào)試模式的。這里,大家可以通過手動進(jìn)行添加。先進(jìn)入Debuggers標(biāo)簽頁,可以看到現(xiàn)在這里還沒有設(shè)置調(diào)試器,點(diǎn)擊右側(cè)的Add按鈕,添加一個(gè)自定義的調(diào)試器,Name修改為gdb,Path選擇Qt 5.2安裝目錄下的tool->mingw48_32->bin中的gdb程序,我這里是C:\Qt\Qt5.2.0\Tools\mingw48_32\bin\gdb.exe,完成后點(diǎn)擊下面的應(yīng)用按鈕,效果如下圖所示。






現(xiàn)在回到構(gòu)建套件標(biāo)簽頁,可以看到調(diào)試器已經(jīng)默認(rèn)選擇為了我們添加的gdb,而且以前的×××感嘆號也消失了。


我們這里只是簡單介紹了一下構(gòu)建套件的設(shè)置,至于如何添加設(shè)置Android開發(fā)套件,會在后面專門的章節(jié)進(jìn)行介紹,這里就不再講解。




二、運(yùn)行一個(gè)Qt 4程序



       為了盡可能演示Qt 4程序在Qt 5編譯時(shí)會出現(xiàn)的問題,我們這里使用了一個(gè)Windows Xp下面基于Qt 4.7創(chuàng)建的Qt Gui應(yīng)用程序。這一節(jié)的目的就是讓大家作為參考,如果你也遇到了類似的情況,那么可以這樣來解決,如果沒有遇到,則可以直接跳過相關(guān)內(nèi)容。




1. 編碼問題



我們打開現(xiàn)有的Qt 4版本的helloworld源碼目錄,然后將helloworld.pro文件拖入到Qt Creator中打開該項(xiàng)目,這時(shí)會跳轉(zhuǎn)到項(xiàng)目模式,進(jìn)行項(xiàng)目配置,也就是選擇構(gòu)建套件。這里默認(rèn)使用桌面版的Qt 5.2即可,如下圖所示,然后點(diǎn)擊ConfigureProject按鈕。






下面我們打開項(xiàng)目文件列表中的helloDialog.cpp文件,因?yàn)檫@里有一行中文注釋,所以出現(xiàn)了“錯(cuò)誤:無法用”UTF-8”-編碼解碼”hellodialog.cpp”。無法編輯。”的錯(cuò)誤提示,這是因?yàn)樵撐募皇鞘褂肬TF-8編碼的,而其中的中文無法使用UTF-8自動解碼造成的。為了使中文可以正常顯示,并且以后不再出現(xiàn)該錯(cuò)誤提示,我們可以通過下面的方法手動來將文件設(shè)置為UTF-8編碼。


       首先點(diǎn)擊錯(cuò)誤提示后面的選擇編碼按鈕(也可以使用“編輯”->“選擇編碼”菜單項(xiàng)),然后選擇GB18030/gb18030/ibm-1392/windows-54936一項(xiàng),最后點(diǎn)擊按編碼重新載入按鈕。如下圖所示。






       完成后發(fā)現(xiàn)已經(jīng)可以正常顯示中文了,但是如果關(guān)閉項(xiàng)目重新打開,中文依然無法正常顯示。所以我們還需要繼續(xù)設(shè)置。再次選擇“編輯”->“選擇編碼”菜單項(xiàng),然后選擇UTF-8一項(xiàng),點(diǎn)擊按編碼保存按鈕。如下圖所示。





       這樣設(shè)置完后,文件已經(jīng)使用UTF-8進(jìn)行保存了,后面再打開也不會出現(xiàn)編碼錯(cuò)誤了。




2.代碼問題



       下面先直接運(yùn)行程序,這時(shí)會在問題面板出現(xiàn)QtGui/QApplication: No such file or directory的問題提示。如下圖所示。







我們雙擊該問題,定位到出錯(cuò)位置,這時(shí)跳轉(zhuǎn)到了main.cpp文件中,可以看到第一個(gè)頭文件包含找不到路徑。如下圖所示。







       我們可以到QtGui目錄(我這里是:C:\Qt\Qt5.2.0\5.2.0-beta1\mingw48_32\include\QtGui)中查看一下,發(fā)現(xiàn)這里沒有QApplication相關(guān)文件。為了更加明了和準(zhǔn)確的講解該問題,我們在Qt Creator中創(chuàng)建一個(gè)基于Qt 5.2GUI程序作為參照。


       選擇“新建”->“新建文件或項(xiàng)目”菜單項(xiàng),這里可以看到在應(yīng)用程序中第一個(gè)是QtWidgets Application,而不再是Qt 4中熟悉的Qt GuiApplication,我們選擇它作為模板。然后添加項(xiàng)目名稱為helloqt,路徑大家選擇一個(gè)沒有中文的目錄即可。下面的Kit就選擇默認(rèn)的DesktopQt 5.2,然后類信息不用更改。


完成之后,我們先運(yùn)行一下新建的helloqt程序,發(fā)現(xiàn)是沒有問題的。這時(shí)打開其main.cpp文件,發(fā)現(xiàn)#include <QApplication>是這樣寫的,這里沒有添加QtGui?,F(xiàn)在我們更改前面helloworld項(xiàng)目中main.cpp文件的頭文件包含為#include <QApplication>,不過,改成這樣后依然提示找不到文件。


現(xiàn)在我們可以對照helloqt文件的內(nèi)容,看看還有哪里與我們Qt 4程序不同。這時(shí),在helloqt.pro文件中會很明顯發(fā)現(xiàn)一行代碼:


greaterThan(QT_MAJOR_VERSION, 4): QT += widgets


這行代碼的大致意思是:在高于Qt4的版本中要添加QT += widgets,也就是說要使用widgets模塊,這里的widgets模塊到底包含了什么內(nèi)容,有什么作用?這些問題我們暫且不考慮,現(xiàn)在將這行代碼復(fù)制到helloworld.pro中,然后運(yùn)行helloworld程序,發(fā)現(xiàn)程序已經(jīng)可以可以正常運(yùn)行了。




3.應(yīng)用程序圖標(biāo)



       在這一節(jié)的最后,我們再補(bǔ)充一點(diǎn)。在Qt 4中如果要給一個(gè)程序添加應(yīng)用程序圖標(biāo),需要先有一個(gè)ico圖標(biāo)文件,然后創(chuàng)建一個(gè).rc文件,還要輸入一行怪異的代碼。而在Qt 5中這個(gè)變得非常簡單,我們只需要將ico圖標(biāo)文件放到源碼目錄,然后在pro項(xiàng)目文件中添加一行代碼RC_ICONS = myico.ico即可,后面myico.ico就是自己圖標(biāo)文件的名字。




三、發(fā)布Qt 5程序



       現(xiàn)在helloworld程序已經(jīng)可以編譯運(yùn)行了,下面我們將打包發(fā)布該程序。要作為發(fā)布使用,先要選擇編譯Release版本,然后運(yùn)行。完成后到編譯生成目錄(我這里是:E:\qtsrc\build-helloworld-Desktop_Qt_5_2_0_MinGW_32bit-Release\release)中將生成的helloworld.exe文件復(fù)制到一個(gè)新建的文件夾中,比如這里放到了新建的helloworld文件夾中。然后雙擊運(yùn)行helloworld程序,并根據(jù)提示到Qt 5.2的安裝目錄(我這里是:C:\Qt\Qt5.2.0\5.2.0-beta1\mingw48_32\bin)中將需要的dll文件復(fù)制過來,一共是9個(gè)。這樣就可以在本機(jī)上運(yùn)行該程序了,但是在別的沒有安裝該版本Qt的機(jī)子上還是無法運(yùn)行,這時(shí)需要將C:\Qt\Qt5.2.0\5.2.0-beta1\mingw48_32\plugins中的platforms目錄復(fù)制過來,而里面只要保留qminimal.dllqwindows.dll兩個(gè)文件即可。最終效果如下圖所示。






后面就可以將該文件夾通過壓縮文件打包進(jìn)行發(fā)布了。當(dāng)然,如果程序中使用了其他模塊,可能還需要復(fù)制plugins目錄中的相應(yīng)的文件。





結(jié)語


       對于大部分Qt 4程序而言,Qt 5沒有太大的改變,不過在升級移植的過程中還是會發(fā)現(xiàn)很多細(xì)節(jié)改動的。這一節(jié)我們講述了Qt 5.2版的安裝、設(shè)置,然后講述了怎樣將一個(gè)Qt 4程序使用Qt 5進(jìn)行編譯運(yùn)行,最后還講述了Qt 5程序的發(fā)布。

       在下一節(jié)我們將會講解Qt 5的整個(gè)框架,讓大家更加清楚Qt 5中改變了哪些模塊,增加和刪除了哪些模塊


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

qt t5
AI