天天看點

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

轉載請注明出處:CN_Simo。

本篇内容主講Qt應用從建立到釋出的整個過程,旨在幫助讀者能夠快速走進Qt的世界。 本來計劃是講解Qt源碼靜态編譯,如此的話讀者可能并不能清楚地知道為何要靜态編譯,是以借此篇内容說明一下原由并為之後文章的學習做準備。 即使本片内容隻是在圍繞一個小小的HelloWorld程式開展,但還是希望朋友們不要急于求成,“欲速則不達”。

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

項目建立->源碼編譯->程式運作->釋出程式

主體内容将按照下圖中所示路線進行闡述:

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

分上、下兩路,最後共同彙聚到一起進行“應用釋出”的講解,好的,閑話不多聊,我們上路吧!

注意:不要小瞧Hello World哦!

運作Qt Creator後:

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

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(2)輸入項目名稱:helloworld,然後點選“浏覽”按鈕來選擇源碼存放路徑,比如我這裡是E:\codeTest\qtCreator_2,如果選中了“設為預設的項目路徑”,那麼今後建立的項目都将存放在這裡。單擊“下一步”。注意:項目所在路徑中不能有中文,否則程式運作報錯,例如:C:\你好\qtCreator_2

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(3)選擇建構套件:DeskTop Qt 5.6.7.1 MinGw 32bit,點選詳情按鈕可以看到  預設為Debug版本和Release版本分别設定了不同的目錄,Debug即為調試版本,Release為可釋出版本。都保持預設即可,單擊“下一步”。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(5)設定項目管理:在這裡可以看到這個項目的彙總資訊,還可以使用版本控制系統,這裡不會涉及,直接單擊”完成“即可。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(6)右擊項目檔案清單中的任一檔案,點選”在Explorer中打開“,就可以轉到項目檔案夾,讓我們來看看項目目錄中的各個檔案說明:

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(1)在Qt Creator編輯模式下輕按兩下項目檔案清單中界面檔案分類下的hellodialog.ui檔案,便會進入設計模式。

(2)關于設計模式的界面介紹這裡就不再贅述,可以翻看《Qt Creator快速入門》第二張檢視。不過我覺的這些介紹都多餘,正常人都明白,界面标注的很清晰。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(3)在控件區尋找一個”Label“标簽部件,将它拖拽到主設計區的界面上,輕按兩下進入它進入部件進入編輯狀态後輸入”Hello World!我是Qter!“字元串。還可以再拖拽一個”PushButton“按鈕部件到标簽下方,編輯按鈕上文本為”OK",如下圖所示:

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

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

(2)将那會用Creator建立的項目中的main.cpp檔案和hellodialog.ui檔案複制hello檔案夾中。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(4)編譯ui檔案。使用uic編譯工具,從ui檔案生成頭檔案。具體指令是:

  uic -o ui_hellodialog.h hellodialog.ui

(5)這時,項目檔案夾中就生成了以ui開頭的頭檔案,可以用”notepad ui_hellodialog.h“指令檢視其具體内容。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

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

(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子產品。注意儲存!

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(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,程式完美運作!

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

 (此步驟需注意: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 中,自行檢視即可!

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

細心的同學可能會發現我們運作的程式都沒有圖示ICO下面我們講程式釋出:

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

前面Qt Creator建立的helloworld項目運作後,預設在helloworld的父目錄中建立了build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Debug檔案夾,所有的輸出檔案都在這裡,exe檔案就在debug中,發現是1M左右;

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

然後我們之前指令行編譯出來的exe預設是release版,去看一看,啊哈!才24K!差距啊!當然你願意釋出大一些的我也不介意!

哦,還要告訴你兩個版本的exe輕按兩下後提示缺少的dll檔案也是不一樣的,實驗證明debug版本需要的dll檔案都是非常大的有的就幾百兆,是以說别想了兄弟。

好,我們确定了release版本最利于釋出,是以我們就用release版本開始以下步驟:

在Qt Creator中打開helloworld項目,在左下角目标選擇器中将建構目标設定為Release,Ctrl+R運作!

(1)先去制作一個ico字尾的圖示檔案吧,沒有怎麼辦!不慌,找一張覺着漂亮的圖檔,點選此處連結:線上生産圖示,進去後制作圖示重命名為”myico.ico“,圖示檔案儲存到項目根目錄中。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   
Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(2)修改項目檔案。在Qt Creator中輕按兩下helloworld.pro檔案,在最後添加下面一行代碼:

 RC_ICONS = myico.ico

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(3)以release方式運作程式,看看是不是有圖示了呢?

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

此時建立的程式直接輕按兩下運作會彈出錯誤框哦!還需要做以下處理才能發給别人用!

(1)建立一個檔案夾,盛放程式釋出要用的dll檔案和exe可執行程式。我這裡是 e:\App,并将exe檔案複制進去,exe檔案在 與工程目錄同級的目錄中(即e:\codeTest\qtCreator_2\build-helloworld-Desktop_Qt_5_6_1_MinGW_32bit-Release\release\中)。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(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這六個檔案。

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(3)另外,還需要将Qt\Qt5.6.1\5.6\mingw49_32\plugins\platforms這個檔案夾複制過去,裡面隻需保留qwindows.dll檔案即可!

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(3)這次輕按兩下exe檔案是不是可以運作了呢!(也可通過指令行完成以上操作,見說明1.①)

步驟三:打封包件夾,釋出!

(1)App檔案夾現在有19M,将App檔案夾壓縮起來,看看多大:

Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

(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使用者注意加分号)
Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   
Qt入門之基礎篇 ( 二 ) :Qt項目建立、編譯、運作和釋出過程解析題解:  文章整體思路:上一路:Qt Creator建立、編譯、運作項目  下一路:指令行建立、編譯、運作項目  彙合:   程式的釋出     說明:   

2. qmake是Qt提供的一個編譯工具,他可以生成與平台無關的.pro檔案,然後利用該檔案生産與平台相關的Makefile檔案。Makefile檔案中包含了要建立的目标檔案或可執行檔案、建立目标檔案所依賴的檔案和建立每個目标檔案時需要運作的指令等資訊。最後使用mingw32-make工具來完成自動編譯,mingw32-make就是通過讀入Makefile檔案的内容來執行編譯工作的。使用mingw32-make指令時會為每一個源檔案生成一個對應的.o目标檔案,最後将這些目标檔案進行連結來生成最終的可執行檔案。與vc++6.0運作程式時編譯、連結、運作三個按鈕相似。

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

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