轉(zhuǎn)載請注明出處:CN_Simo。

題解:  

  本篇內(nèi)容主講Qt應(yīng)用從創(chuàng)建到發(fā)布的整個過程,旨在幫助讀者能夠快速走進Qt的世界。

  本來計劃是講解Qt源碼靜態(tài)編譯,如此的話讀者可能并不能清楚地知道為何要靜態(tài)編譯,所以借此篇內(nèi)容說明一下原由并為之后文章的學(xué)習(xí)做準備。

  即使本片內(nèi)容只是在圍繞一個小小的HelloWorld程序開展,但還是希望朋友們不要急于求成,“欲速則不達”。

文章整體思路:

我們循序漸進地來看,一個Qt應(yīng)用的完成有以下一個重要的步驟:

項目創(chuàng)建->源碼編譯->程序運行->發(fā)布程序

主體內(nèi)容將按照下圖中所示路線進行闡述:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

分上、下兩路,最后共同匯聚到一起進行“應(yīng)用發(fā)布”的講解,好的,閑話不多聊,我們上路吧!

上一路:Qt Creator創(chuàng)建、編譯、運行項目  

注意:不要小瞧Hello World哦!

運行Qt Creator后:

步驟一:新建項目

(1)文件->新建文件或項目,彈出一個對話框,我們選擇Application項目中的Qt Widgets Application。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(2)輸入項目名稱:helloworld,然后點擊“瀏覽”按鈕來選擇源碼存放路徑,比如我這里是E:\codeTest\qtCreator_2,如果選中了“設(shè)為默認的項目路徑”,那么今后創(chuàng)建的項目都將存放在這里。單擊“下一步”。注意:項目所在路徑中不能有中文,否則程序運行報錯,例如:C:\你好\qtCreator_2

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)選擇構(gòu)建套件:DeskTop Qt 5.6.7.1 MinGw 32bit,點擊詳情按鈕可以看到  默認為Debug版本和Release版本分別設(shè)置了不同的目錄,Debug即為調(diào)試版本,Release為可發(fā)布版本。都保持默認即可,單擊“下一步”。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(4)自定義類名:設(shè)定類名為 HelloDialog,基類選擇 QDialog ,單擊”下一步“。這表明該類繼承自 QDialog類,使用這個類可以生成一個對話框界面,Qt框架中所有的類都是以‘Q’開頭的。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(5)設(shè)置項目管理:在這里可以看到這個項目的匯總信息,還可以使用版本控制系統(tǒng),這里不會涉及,直接單擊”完成“即可。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(6)右擊項目文件列表中的任一文件,點擊”在Explorer中打開“,就可以轉(zhuǎn)到項目文件夾,讓我們來看看項目目錄中的各個文件說明

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

步驟二:界面設(shè)計

(1)在Qt Creator編輯模式下雙擊項目文件列表中界面文件分類下的hellodialog.ui文件,便會進入設(shè)計模式。

(2)關(guān)于設(shè)計模式的界面介紹這里就不再贅述,可以翻看《Qt Creator快速入門》第二張查看。不過我覺的這些介紹都多余,正常人都明白,界面標注的很清晰。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)在控件區(qū)尋找一個”Label“標簽部件,將它拖拽到主設(shè)計區(qū)的界面上,雙擊進入它進入部件進入編輯狀態(tài)后輸入”Hello World!我是Qter!“字符串。還可以再拖拽一個”PushButton“按鈕部件到標簽下方,編輯按鈕上文本為”O(jiān)K",如下圖所示:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

步驟三:編譯并運行程序

(1)Ctrl+R組合鍵相當于左下角第一個綠色三角按鈕(編譯運行),按下后程序開始編譯,右下角還有一個可視的進度條。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(2)如果前面操作沒有錯誤,那么這時我們制作的helloWorld應(yīng)用程序已經(jīng)運行起來了,而Qt Creator下方彈出了“應(yīng)用程序輸出”框,在這里有一個紅色的方塊按鈕可以終止程序運行,也可以直接X掉HelloWorld窗口。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)是不是很開心,是不是很激動了,下面我們來看看用“Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)”怎么命令行構(gòu)建項目吧。注意:Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)就是我一直說的Qt終端,在開始菜單可以找到它!

下一路:命令行創(chuàng)建、編譯、運行項目  

步驟一:命令行編譯ui文件并創(chuàng)建項目.pro文件

(1)新建文件夾作為項目文件夾,我建在了E盤根目錄,文件夾名稱hello。注意:路徑中不能有中文。

(2)將那會用Creator創(chuàng)建的項目中的main.cpp文件和hellodialog.ui文件復(fù)制hello文件夾中。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)打開Qt 5.6 for Desktop (MinGW 4.9.2 32 bit),執(zhí)行“e:&&cd e:\hello"切換到hello目錄。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(4)編譯ui文件。使用uic編譯工具,從ui文件生成頭文件。具體命令是:

              uic -o ui_hellodialog.h hellodialog.ui

(5)這時,項目文件夾中就生成了以ui開頭的頭文件,可以用”notepad ui_hellodialog.h“命令查看其具體內(nèi)容。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

注:ui文件是用xml語言描述的界面文件,即我們在QtCreator設(shè)計模式中拖進去的那些部件組成的界面。此步驟的工作就是將ui文件轉(zhuǎn)化成mingw編譯器能看懂的.h頭文件而已。

步驟二:構(gòu)建項目.pro文件

(1)使用”qmake -project“命令來生成pro工程文件,這時可以看到hello目錄中已經(jīng)生成了hello.pro文件,此文件與項目文件夾hello同名。(關(guān)于qmake工具,見說明2

(2)使用”notepad hello.pro"命令打開hello.pro文件,在最后面添加一行代碼:

                      QT += widgets

按下Ctrl+S保存該文件。這行代碼的意思是:需要添加widgets模塊。因為源文件中使用到的類都包含在這個模塊中,例如:main函數(shù)中用到的QApplication類。如果你的Qt版本是Qt4,包含這個模塊可能會出錯,所以為了保證與Qt4的兼容性,建議使用以下的方式:

                    greaterThan(QT_MAJOR_VERSION,4): QT += widgets

意思是:如果Qt的版本大于4那么就添加widgets模塊。注意保存!

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

步驟三:命令行編譯生成exe

(1)命令行輸入:qmake,生成用于編譯的Makefile文件。qmake之后生成共了三個文件、兩個目錄:

Dir

      debug

      release       // 后面編譯后的exe文件在這里面

File:

      Makefile     // 包含了編譯信息

      Makefile.Debug

      Makefile.Release

(2)輸入“mingw32-make"命令來編譯程序,編譯完后會在release目錄中出現(xiàn)helloworld.exe文件。(若想編譯debug版本,只需要更改命令為:mingw32-make -f Makefile.Debug)。

(3)運行程序查看:.\release\hello.exe,程序完美運行!

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

 (此步驟需注意:qmake編譯.pro文件,mingw32-make按Makefile中內(nèi)容編譯。)

匯合:    

上面我們共分了上、下兩路來分別闡述Qt Creator和命令行各自構(gòu)建項目的方法,中途我們來個小總結(jié):

1. 理解ui文件的作用,掌握命令行將ui文件轉(zhuǎn)化為.h文件的方法(uic)。

2. Qt Creator創(chuàng)建項目的步驟。(Qt4和Qt5大同小異)

3. 命令行所有操作一定是要在項目文件夾中,例如這里的hello項目。

4. 掌握qmake工具的使用,在之后純代碼實現(xiàn)HelloWorld的時候要用到。

5. 生成項目文件后,注意加 QT+=widgets。(多數(shù)編譯不成功的原因都在這里!

6. 上面我們用到了一些常用的doc命令,例如cd、dir等等,若是對此有疑惑,還請積極查閱資料,多掌握一些doc命令可以增加工作效率也說不定哦!

7. 以上內(nèi)容我們總共提到了兩種運行.exe的方式:QtCreator中Ctrl+R  和  命令行(必須是Qt 5.6 for Desktop)中.\release\hello.exe的形式。

除了以上兩種方式外,還可以到項目工程文件夾中release中找到hello.exe雙擊運行,此時彈出錯誤提示框告訴你dll文件缺失,解決方法放在 說明1 中,自行查看即可!

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

細心的同學(xué)可能會發(fā)現(xiàn)我們運行的程序都沒有圖標ICO下面我們講程序發(fā)布:

程序的發(fā)布     

已經(jīng)提到過編譯的時候有兩種方式:debug和release,區(qū)別就是debug生成的文件相對特別大,不防比較一下:

前面Qt Creator創(chuàng)建的helloworld項目運行后,默認在helloworld的父目錄中創(chuàng)建了build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Debug文件夾,所有的輸出文件都在這里,exe文件就在debug中,發(fā)現(xiàn)是1M左右

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

然后我們之前命令行編譯出來的exe默認是release版,去看一看,啊哈!才24K!差距?。‘斎荒阍敢獍l(fā)布大一些的我也不介意!

哦,還要告訴你兩個版本的exe雙擊后提示缺少的dll文件也是不一樣的,實驗證明debug版本需要的dll文件都是非常大的有的就幾百兆,所以說別想了兄弟。

好,我們確定了release版本最利于發(fā)布,所以我們就用release版本開始以下步驟:

步驟一:設(shè)置應(yīng)用程序圖標(ICO)

在Qt Creator中打開helloworld項目,在左下角目標選擇器中將構(gòu)建目標設(shè)置為Release,Ctrl+R運行!

(1)先去制作一個ico后綴的圖標文件吧,沒有怎么辦!不慌,找一張覺著漂亮的圖片,點擊此處鏈接:在線生產(chǎn)圖標,進去后制作圖標重命名為”myico.ico“,圖標文件保存到項目根目錄中。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(2)修改項目文件。在Qt Creator中雙擊helloworld.pro文件,在最后添加下面一行代碼:

                                   RC_ICONS = myico.ico

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)以release方式運行程序,看看是不是有圖標了呢?

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

步驟二:創(chuàng)建程序文件夾

此時創(chuàng)建的程序直接雙擊運行會彈出錯誤框哦!還需要做以下處理才能發(fā)給別人用!

(1)新建一個文件夾,盛放程序發(fā)布要用的dll文件和exe可執(zhí)行程序。我這里是 e:\App,并將exe文件復(fù)制進去,exe文件在 與工程目錄同級的目錄中(即e:\codeTest\qtCreator_2\build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Release\release\中)。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(2)在Qt安裝目錄中的bin文件夾中找到缺失的dll文件。例如:本程序需要復(fù)制bin目錄("Qt\Qt5.6.1\5.6\mingw49_32\bin")中的libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll、Qt5Core.dll、Qt5Gui.dll和Qt5Widgets.dll這六個文件。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)另外,還需要將Qt\Qt5.6.1\5.6\mingw49_32\plugins\platforms這個文件夾復(fù)制過去,里面只需保留qwindows.dll文件即可!

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(3)這次雙擊exe文件是不是可以運行了呢?。ㄒ部赏ㄟ^命令行完成以上操作,見說明1.①

步驟三:打包文件夾,發(fā)布!

(1)App文件夾現(xiàn)在有19M,將App文件夾壓縮起來,看看多大:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

(2)大概有6M,可以接受這個大小的話就去分享給其他人吧!

到此,整個項目發(fā)布過程就結(jié)束了。此篇文章也已經(jīng)接近尾聲,我祝愿大家雞年快樂!

 

說明:   

1. 雙擊exe后無法打開,除了將缺失的dll文件全部復(fù)制到exe所在目錄的方法外還有下面兩種方式:

       ①在不知道需要哪些dll文件情況下可以使用windeployqt命令來讓計算機幫你自動復(fù)制。啟動Qt 5.6 for Desktop命令工具后執(zhí)行以下命令即可:(將e:\App換成你的exe所在文件夾路徑)

                   windeployqt e:\App

       ②不復(fù)制dll文件,將Qt\Qt5.6.1\5.6\mingw49_32\bin目錄添加至PATH環(huán)境變量(注意發(fā)布程序時需要復(fù)制dll)。

       方法:桌面-右擊此電腦-選擇屬性-高級系統(tǒng)設(shè)置-環(huán)境變量-雙擊PATH進入編輯狀態(tài)-添加bin路徑(win7用戶注意加分號)

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

2. qmake是Qt提供的一個編譯工具,他可以生成與平臺無關(guān)的.pro文件,然后利用該文件生產(chǎn)與平臺相關(guān)的Makefile文件。Makefile文件中包含了要創(chuàng)建的目標文件或可執(zhí)行文件、創(chuàng)建目標文件所依賴的文件和創(chuàng)建每個目標文件時需要運行的命令等信息。最后使用mingw32-make工具來完成自動編譯,mingw32-make就是通過讀入Makefile文件的內(nèi)容來執(zhí)行編譯工作的。使用mingw32-make命令時會為每一個源文件生成一個對應(yīng)的.o目標文件,最后將這些目標文件進行鏈接來生成最終的可執(zhí)行文件。與vc++6.0運行程序時編譯、鏈接、運行三個按鈕相似。

 

點擊跳轉(zhuǎn)到:Qt入門之基礎(chǔ)篇 ( 一 ) :Qt4及Qt5的下載與安裝

點擊跳轉(zhuǎn)到:Qt入門之基礎(chǔ)篇(三):掌握Qt4的靜態(tài)編譯基本方法

http://www.cnblogs.com/lxmwb/p/6353883.html