Qt入門之基礎篇 ( 二 ) :Qt項目創建、編譯、運行和發佈過程解析

轉載請註明出處:CN_Simohtml

題解:  

  本篇內容主講Qt應用從建立到發佈的整個過程,旨在幫助讀者可以快速走進Qt的世界。c++

  原本計劃是講解Qt源碼靜態編譯,如此的話讀者可能並不能清楚地知道爲什麼要靜態編譯,因此藉此篇內容說明一下起因併爲以後文章的學習作準備。windows

  即便本片內容只是在圍繞一個小小的HelloWorld程序開展,但仍是但願朋友們不要急於求成,「欲速則不達」。設計模式

文章總體思路:

咱們按部就班地來看,一個Qt應用的完成有如下一個重要的步驟:框架

項目建立->源碼編譯->程序運行->發佈程序函數

主體內容將按照下圖中所示路線進行闡述:工具

分上、下兩路,最後共同匯聚到一塊兒進行「應用發佈」的講解,好的,閒話很少聊,咱們上路吧!post

上一路:Qt Creator建立、編譯、運行項目  

注意:不要小瞧Hello World哦!學習

運行Qt Creator後:ui

步驟一:新建項目

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

(2)輸入項目名稱:helloworld,而後點擊「瀏覽」按鈕來選擇源碼存放路徑,好比我這裏是E:\codeTest\qtCreator_2,若是選中了「設爲默認的項目路徑」,那麼從此建立的項目都將存放在這裏。單擊「下一步」。注意:項目所在路徑中不能有中文,不然程序運行報錯,例如:C:\你好\qtCreator_2

(3)選擇構建套件:DeskTop Qt 5.6.7.1 MinGw 32bit,點擊詳情按鈕能夠看到  默認爲Debug版本和Release版本分別設置了不一樣的目錄,Debug即爲調試版本,Release爲可發佈版本。都保持默認便可,單擊「下一步」。

(4)自定義類名:設定類名爲 HelloDialog,基類選擇 QDialog ,單擊」下一步「。這代表該類繼承自 QDialog類,使用這個類能夠生成一個對話框界面,Qt框架中全部的類都是以‘Q’開頭的。

(5)設置項目管理:在這裏能夠看到這個項目的彙總信息,還可使用版本控制系統,這裏不會涉及,直接單擊」完成「便可。

(6)右擊項目文件列表中的任一文件,點擊」在Explorer中打開「,就能夠轉到項目文件夾,讓咱們來看看項目目錄中的各個文件說明

步驟二:界面設計

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

(2)關於設計模式的界面介紹這裏就再也不贅述,能夠翻看《Qt Creator快速入門》第二張查看。不過我覺的這些介紹都多餘,正常人都明白,界面標註的很清晰。

(3)在控件區尋找一個」Label「標籤部件,將它拖拽到主設計區的界面上,雙擊進入它進入部件進入編輯狀態後輸入」Hello World!我是Qter!「字符串。還能夠再拖拽一個」PushButton「按鈕部件到標籤下方,編輯按鈕上文本爲」OK",以下圖所示:

步驟三:編譯並運行程序

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

(2)若是前面操做沒有錯誤,那麼這時咱們製做的helloWorld應用程序已經運行起來了,而Qt Creator下方彈出了「應用程序輸出」框,在這裏有一個紅色的方塊按鈕能夠終止程序運行,也能夠直接X掉HelloWorld窗口。

(3)是否是很開心,是否是很激動了,下面咱們來看看用「Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)」怎麼命令行構建項目吧。注意:Qt 5.6 for Desktop (MinGW 4.9.2 32 bit)就是我一直說的Qt終端,在開始菜單能夠找到它!

下一路:命令行建立、編譯、運行項目  

步驟一:命令行編譯ui文件並建立項目.pro文件

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

(2)將那會用Creator建立的項目中的main.cpp文件和hellodialog.ui文件複製hello文件夾中。

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

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

              uic -o ui_hellodialog.h hellodialog.ui

(5)這時,項目文件夾中就生成了以ui開頭的頭文件,能夠用」notepad ui_hellodialog.h「命令查看其具體內容。

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

步驟二:構建項目.pro文件

(1)使用」qmake -project「命令來生成pro工程文件,這時能夠看到hello目錄中已經生成了hello.pro文件,此文件與項目文件夾hello同名。(關於qmake工具,見說明2

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

                      QT += widgets

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

                    greaterThan(QT_MAJOR_VERSION,4): QT += widgets

意思是:若是Qt的版本大於4那麼就添加widgets模塊。注意保存!

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

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

Dir

      debug

      release       // 後面編譯後的exe文件在這裏面

File:

      Makefile     // 包含了編譯信息

      Makefile.Debug

      Makefile.Release

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

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

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

匯合:    

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

1. 理解ui文件的做用,掌握命令行將ui文件轉化爲.h文件的方法(uic)。

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

3. 命令行全部操做必定是要在項目文件夾中,例如這裏的hello項目。

4. 掌握qmake工具的使用,在以後純代碼實現HelloWorld的時候要用到。

5. 生成項目文件後,注意加 QT+=widgets。(多數編譯不成功的緣由都在這裏!

6. 上面咱們用到了一些經常使用的doc命令,例如cd、dir等等,如果對此有疑惑,還請積極查閱資料,多掌握一些doc命令能夠增長工做效率也說不定哦!

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

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

細心的同窗可能會發現咱們運行的程序都沒有圖標ICO下面咱們講程序發佈:

程序的發佈     

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

前面Qt Creator建立的helloworld項目運行後,默認在helloworld的父目錄中建立了build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Debug文件夾,全部的輸出文件都在這裏,exe文件就在debug中,發現是1M左右

而後咱們以前命令行編譯出來的exe默認是release版,去看一看,啊哈!才24K!差距啊!固然你願意發佈大一些的我也不介意!

哦,還要告訴你兩個版本的exe雙擊後提示缺乏的dll文件也是不同的,實驗證實debug版本須要的dll文件都是很是大的有的就幾百兆,因此說別想了兄弟。

好,咱們肯定了release版本最利於發佈,因此咱們就用release版本開始如下步驟:

步驟一:設置應用程序圖標(ICO)

在Qt Creator中打開helloworld項目,在左下角目標選擇器中將構建目標設置爲Release,Ctrl+R運行!

(1)先去製做一個ico後綴的圖標文件吧,沒有怎麼辦!不慌,找一張覺着漂亮的圖片,點擊此處連接:在線生產圖標,進去後製做圖標重命名爲」myico.ico「,圖標文件保存到項目根目錄中。

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

                                   RC_ICONS = myico.ico

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

步驟二:建立程序文件夾

此時建立的程序直接雙擊運行會彈出錯誤框哦!還須要作如下處理才能發給別人用!

(1)新建一個文件夾,盛放程序發佈要用的dll文件和exe可執行程序。我這裏是 e:\App,並將exe文件複製進去,exe文件在 與工程目錄同級的目錄中(即e:\codeTest\qtCreator_2\build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Release\release\中)。

(2)在Qt安裝目錄中的bin文件夾中找到缺失的dll文件。例如:本程序須要複製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這六個文件。

(3)另外,還須要將Qt\Qt5.6.1\5.6\mingw49_32\plugins\platforms這個文件夾複製過去,裏面只需保留qwindows.dll文件便可!

(3)此次雙擊exe文件是否是能夠運行了呢!(也可經過命令行完成以上操做,見說明1.①

步驟三:打包文件夾,發佈!

(1)App文件夾如今有19M,將App文件夾壓縮起來,看看多大:

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

到此,整個項目發佈過程就結束了。此篇文章也已經接近尾聲,我祝願你們雞年快樂!

 

說明:   

1. 雙擊exe後沒法打開,除了將缺失的dll文件所有複製到exe所在目錄的方法外還有下面兩種方式:

       ①在不知道須要哪些dll文件狀況下可使用windeployqt命令來讓計算機幫你自動複製。啓動Qt 5.6 for Desktop命令工具後執行如下命令便可:(將e:\App換成你的exe所在文件夾路徑)

                   windeployqt e:\App

       ②不復制dll文件,將Qt\Qt5.6.1\5.6\mingw49_32\bin目錄添加至PATH環境變量(注意發佈程序時須要複製dll)。

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

2. qmake是Qt提供的一個編譯工具,他能夠生成與平臺無關的.pro文件,而後利用該文件生產與平臺相關的Makefile文件。Makefile文件中包含了要建立的目標文件或可執行文件、建立目標文件所依賴的文件和建立每一個目標文件時須要運行的命令等信息。最後使用mingw32-make工具來完成自動編譯,mingw32-make就是經過讀入Makefile文件的內容來執行編譯工做的。使用mingw32-make命令時會爲每個源文件生成一個對應的.o目標文件,最後將這些目標文件進行連接來生成最終的可執行文件。與vc++6.0運行程序時編譯、連接、運行三個按鈕類似。

 

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

點擊跳轉到:Qt入門之基礎篇(三):掌握Qt4的靜態編譯基本方法

相關文章
相關標籤/搜索