<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 6.2 Hello Qt 在這一節中,將通過一個“Hello Qt!”程序,向大家介紹 Qt4 程序編譯運行的流 程,并且將采用上面所述的 3 種方法分別介紹,使大家能夠對比學習。為什么選擇這個 “老套”的程序呢,大家可以看到它雖然簡單,卻是“麻雀雖小,五臟俱全”。基本上每個 講述編程的書籍開頭不是“Hello World”就是“Welcome You”,好多世界級的大師都這么 做,肯定是有道理的,并且這已經是講述編程的書籍的“約定俗成”了。 ### 6.2.1 基本流程 1\. 成功安裝 Qt 4.5 2\. 正確配置環境變量(Windows 環境通常不需要) 3\. 書寫源代碼 將下面的源代碼保存至一個名為 helloqt.cpp 的文件,并把它放進一個名為 helloqt 的目錄中,你可以使用任何一種文本編輯器完成此項工作,比如 Windows 平臺的記事本, Linux 下的 vim,Mac OS X 下的 TextEdit。 4\. 生成項目文件 在命令行下,進入 helloqt 目錄,輸入如下命令,生成一個與平臺無關的項目文件 helloqt.pro: ``` qmake –project ``` 5\.生成 makefile 文件 然后輸入如下命令,從這個項目文件生成一個與平臺相關的 makefile 文件: ``` qmake helloqt.pro ``` 6\.運行 make 構建程序 在 X11 以及 Mac 下,鍵入 make; 在 Windows 上,如果使用的是開源版的 Qt,鍵入 mingw32-make.exe;如果使用的是商 業版的 Qt,則輸入 nmake; 7\. 運行程序 在 Windows 下,輸入 helloqt,并回車運行; 在 X11 下,輸入./helloqt; 在 Mac OS X 下,輸入 open helloqt.app 8\.結束程序 要結束該程序,可以直接單擊窗口標題上的關閉按鈕。 小貼士:這就是 Qt4 程序編譯運行的大致順序,上面的這個流程主要是采用命令行方式進 行的。如果你使用的是 Qt 的商業版和 Microsoft Visual C++作為開發環境,則需要使用 nmake 命令替代 make 命令。還可以通過.pro 文件創建一個 Visual C++工程文件,方法如 下: ``` qmake –project qmake –tp vc helloqt.pro ``` 然后,就可以使用 Visual C++打開生成的工程文件,繼續完成編譯運行的工作。 如果是在 Mac OS X 的 Xcode 里面使用 Qt,則可以打開命令行,輸入如下命令來生成一 個 Xcode 工程文件,繼而完成后面的工作: ``` qmake –spec macx-xcode helloqt.pro ``` 最后這個程序的運行起來就像圖 6-1 所示的那樣。 ![](https://box.kancloud.cn/2016-01-22_56a1a14db0c86.png) 圖 6-1 Hello Qt!運行效果 ### 6.2.2 源碼分析 本實例實現一個“Hello Qt !”的例子,它是基于對話框的程序,界面上有一個按 鈕,上面的字符是“Hello Qt!”,單擊該按鈕,對話框關閉,程序退出。實例效果如圖所 示: 實現代碼如下: ``` #include &lt;QApplication&gt; #include &lt;QPushButton&gt; int main(int argc, char *argv[]) { QApplication app(argc,argv); QPushButton pushButton( QObject::tr("Hello Qt !") ); pushButton.show(); QObject::connect(&pushButton,SIGNAL(clicked()),&app,SLOT(quit())); return app.exec(); } ``` 第 1 行包含了 QApplication 的定義。Qt 的頭文件中最為重要的兩個是&lt;QApplication&gt; 和&lt;QCoreApplication&gt;。在本書后面的章節中,你會經常看到它們。所有 Qt GUI 應用程序 都需要包含&lt;QApplication&gt;這個文件,若使用的是非 GUI 應用程序,則需要包含 ``` &lt;QCoreApplication&gt;。 ``` 小貼士:在 Qt4 中,對于每個 Qt 類,都有一個與該類同名并且采用大寫形式的頭文件,在 這個頭文件中包含了對該類的定義。 第 2 行包含了按鈕窗口部件的頭文件。 小貼士:在 Qt4 中,頭文件的包含可以采用類似于&lt;QApplication&gt;和&lt;QPushButton&gt;的形 式,也可以使用&lt;qapplication.h&gt;和&lt;qpushbutton.h&gt;的形式。為什么這么說呢,以 Windows 上安裝的 Qt4.5 為例,請進入你的安裝路徑下的 include 目錄,我的是 C:\Qt\2009.03\qt\include\QtGui,在這里你可以找到 QApplication 和 qapplication.h, 用記事本打開 QApplication 這個文件,你就會發現里面只有一行代碼: #include "qapplication.h"。 第 3 行創建了應用程序的入口,Qt 程序以一個 main()函數作為入口,它有 argc 和 argv 兩個參數。 第 5 行創建了一個 QApplication 對象,用來管理整個應用程序所用到的資源。每個 Qt 程序都必須有且只有一個 QApplication 對象。這個 QApplication 構造函數需要 argc 和 argv 作為參數,以支持程序的命令行參數。 第 6 行創建了一個 QPushButton 對象,它是一個窗口部件(widget),并把它的顯示文 本設置為“Hello Qt!”。 小貼士:在 Qt 和 UNIX 術語中,窗口部件(widget)通常是指用戶界面中的可視化元素, 比如按鈕、滾動條和菜單等都是窗口部件。該詞起源于 “window gadget”這個詞組,語義 有些類似于 Windows 系統中的“控件”(control)的含義,但又不盡相同。 第 7 行調用按鈕對象的 show()方法,將按鈕顯示出來。Qt4 在創建窗口部件的時候, 通常都是隱藏不顯示的,可以調用 show()方法來將它們顯示出來。這種做法還有一個好 處,就是我們可以先對窗口部件的屬性等進行設置,然后再顯示出來,從而防止閃爍現象的 出現。 第 8 行使用了 Qt 的信號/槽機制。這一機制是這樣運作的,Qt 的窗口部件可以通過發 射信號(signal)來通知應用程序,某個用戶動作已經發生或者是窗口部件的某種狀態發生 了變化,應用程序通過一個稱為槽( slot)的函數來做出回應和處理。以我們這個程序為 例,當用戶使用鼠標左鍵單擊那個 “Hello Qt!”按鈕時,該按鈕就會發射一個 clicked() 信號,根據我們的設置,QApplication 對象的 quit()槽負責響應這個信號,它執行退出應 用程序的操作。 這里大家不必深究這個內容,只需要知道“它們就是這么用的”即可。在本節的后面 會講述信號/槽機制的用法,更為深入的內容,可以閱讀第 13 章。 第 9 行調用 QApplication 的 exec()方法,程序進入事件循環,等待用戶的動作并適時 做出響應,這里的響應通常就是執行槽函數。 Qt 完成事件處理及顯示的工作后,退出應用 程序,并返回 exec()的值。 ### 6.2.3 編譯運行 在 6.2.1 節里,我們已經總結了編譯運行 Qt 的方法,但恐怕還是有些晦澀難懂,為了 使讀者朋友看得更為清晰,現在把它圖文解說一下。以 Windows 平臺為例,操作系統是 Windows XP SP2 中文版,Qt 是 4.5 SDK,我們從第 4 步開始(前 3 步實在沒有什么好說 的,如有不明白的,請回頭去看前幾章,呵呵)。 依次點擊【開始】→【所有程序】→【Qt SDK by Nokia v2009.03(open source)】→【Qt Command Prompt】,啟動 Qt 命令行,如圖 6-2 所示,每次啟動時,命令行會自動為我 們配置好 Qt 所需的環境。 ![](https://box.kancloud.cn/2016-01-22_56a1a14dbe27f.png) 圖 6-2 啟動 Qt 命令行 接下來切換到你保存的程序文件目錄,我這里的情形如圖 6-3 所示 ![](https://box.kancloud.cn/2016-01-22_56a1a14dd2d21.png) 圖 6-3 進入程序文件所在的目錄 接下來輸入 qmake –project,生成項目文件,再輸入 dir/p 查看,發現生成的項目文 件名為 helloqt.pro。 ![](https://box.kancloud.cn/2016-01-22_56a1a14de811f.png) 圖 6-4 生成項目文件 然后輸入 qmake –helloqt.pro,生成 makefile 文件。 這之后再輸入 mingw32-make.exe,開始編譯程序,情形如圖 6-5 所示,編譯成功后,將在 debug 目錄下生成一個名為 helloqt.exe 的可執行文件。 ![](https://box.kancloud.cn/2016-01-22_56a1a14e10d64.png) 圖 6-5 編譯程序 進入 debug 目錄,輸入 helloqt,運行它,程序的樣子與圖 6-1 所示相同。 好了,到此我們的第一個 Qt4 程序就順利完成了,它是基于手寫代碼,并且是采用命令行方式編譯運行的。這就是我們所說的第 1 種方法。 ### 6.2.4 第 2 種方法 這里我們以 Qt Creator(關于 Qt Creator 的詳細使用方法,請見第 12 章)作為 IDE,流程如下: 1\. 成功安裝 Qt4.5 2\. 正確配置環境變量(Windows 環境通常不需要) 3\. 書寫源代碼 4\. 啟動 Qt Creator 首先依次點擊【開始】→【所有程序】→【Qt SDK by Nokia v2009.03(open source)】→【Qt Creator】,啟動 Qt Creator。 然后依次點擊主菜單的【Tools】→【Options...】,在彈出的如圖所示的對話框中選 中【Qt4】→【Qt Versions】,查看 Qt Creator 識別的 Qt4 的版本情況,如果符合你的實 際情形,就直接點擊【OK】按鈕退出;如果不符合,你可以對它進行增、刪、改,方法比較 簡單,根據屏幕的提示完成即可。 注意,這一步很重要,如果 Qt Creator 沒有正確識別你的 Qt4 所在的位置,那么接下 來的所有步驟都將變得沒有意義。 ![](https://box.kancloud.cn/2016-01-22_56a1a14e299a3.png) 圖 6-6 查看并設置 Qt4 環境 5\.新建工程 依次點擊【File】→【New...】→【Projects】→【Empty Qt4 Project】,如圖 6-7 所示,點擊【OK】按鈕建立一個空的 Qt4 工程。 ![](https://box.kancloud.cn/2016-01-22_56a1a14e4aab4.png) 圖 6-7 新建 Qt4 工程 接下來彈出的對話框會要求你設置工程的名字和所在的目錄,并且會提示你不可采用 特殊的字符,如圖 6-8 所示,根據筆者的經驗,不要包含空格,最好不要包含中文字符, 切記! ![](https://box.kancloud.cn/2016-01-22_56a1a14e6ae0a.png) 圖 6-8 Qt 對于命名的要求 如圖 6-9 所示,輸入正確的路徑和工程名字(這里是 helloqt)后,點擊 Next 按鈕。 ![](https://box.kancloud.cn/2016-01-22_56a1a14e85617.png) 圖 6-9 正確的輸入工程名稱和目錄 接下來這一步沒有什么好說的,系統向你展示了即將創建的工程的信息,如圖 6-10 所 示,點擊 Finish 按鈕,這就生成了一個新的工程,如圖 6-11 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a14e9c4c0.png) 圖 6-10 新工程的信息 ![](https://box.kancloud.cn/2016-01-22_56a1a14eb3b2a.png) 圖 6-11 生成了一個新的工程 這時候的工程還是空的,我們需要向里面添加文件。有兩種方法,一是添加已經存在的,還有就是新建一個。 下面先說如何添加一個已經存在的文件。 在工程目錄上點擊鼠標右鍵,在彈出的上下文菜單上選擇 【Add Existing Files...】,如圖 6-12 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a14ec6172.png) 圖 6-12 添加已有文件 然后找到你要添加的 helloqt.cpp 的位置,把它加入進去,這時候在工程目錄里面就 多了一項你剛才添加的文件,如圖 6-13 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a14edadbb.png) 圖 6-13 加入已經制作好的文件 小貼士:在 Qt Creator 中對添加已有文件采取的是“不拷貝添加”的方式,即添加完成 后,Qt4 的工程并沒有把這個文件從原有的位置拷貝一份到工程目錄里面,而是添加了它的 相對路徑位置。這點可以通過添加文件完成后,查看 .pro 文件的內容看出來。在這一點上 Qt Creator 與 KDevelop 和 QDevelop 中有所不同,后兩者都可以設置添加的方式是不拷貝 添加還是拷貝添加。 我建議還是自己先手動把文件放置在工程目錄下面,然后再在 Qt Creator 中添加。一 方面便于統一管理工程文件,二來可以提高 Qt 應用程序的效率。 下面再介紹添加新文件的方法。 依次點擊【File】→【New...】→【C++】→【C++ Source File】,如圖 6-14 所示, 我們這里是要添加一個 C++實現文件,點擊【OK】按鈕,進入下一步的設置。 ![](https://box.kancloud.cn/2016-01-22_56a1a14eefb3d.png) 圖 6-14 新建一個 C++實現文件 在接下來的如圖 6-15 所示界面中,正確的輸入文件名字,這里是 helloqt.cpp,并選 擇工程的目錄,然后點擊 Next 按鈕進入下一步。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f1c6d3.png) 圖 6-15 輸入文件名 接下來,如圖 6-16 所示,選擇默認設置,把文件加入到 helloqt.pro 工程中,點擊Finish 按鈕。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f2e1ca.png) 圖 6-16 項目信息 這時,我們只是在工程里面加入了一個空的 C++實現文件,還需要添加內容。把 helloqt.cpp 源代碼加入到如圖 6-17 所示的屏幕右面的代碼編輯區內。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f3f5b4.png) 圖 6-17 新文件加入后的樣子 好了,編輯文件和設置工程的工作業已結束。接下來,就要開始編譯源程序了,首先 運行 qmake。依次點擊主菜單的【Build】→【Run qmake】,或者通過鼠標右鍵的上下文菜單來實現。 那么怎樣才能知道 qmake 運行成功與否呢?Qt Creator 為我們提供了一個直觀的查看 方式,當你運行 qmake 或者是 Build、Run 時,在 Qt Creator 的左下角會顯示一個如圖 6- 18 所示的運行狀態進度條顯示按鈕,如果編譯成功,它就會顯示為滿格的綠色;如果運行 不成功,或中途遇到 bug,它就會顯示為不滿格的紅色,并且會提示 bug 和 warning 的數 量。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f6140b.png) 圖 6-18 運行狀態顯示按鈕 在這個進度條按鈕上點擊一下,就會顯示出具體的狀態信息,如圖 6-19 所示,這個 Output 窗口顯示了命令運行的過程,最后一句 ”Exited with code 0”表示成功。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f6fa60.png) 圖 6-19 運行 qmake 成功 接下來編譯程序,依次點擊主菜單的【Build】→【Build All Ctrl+Shift+B】,或者 通過鼠標右鍵的上下文菜單來實現,效果如圖 6-20 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f7e6da.png) 圖 6-20 編譯(build)成功 依次點擊主菜單的【Build】→【Run Ctrl+R】,或者通過鼠標右鍵的上下文菜單來實 現,程序運行的效果與圖 6-1 相同。 第 2 種方法的使用大致就是這樣。不管是多么復雜的程序,使用它的流程都是與此類 似的。 ### 6.2.5 第 3 種方法 這種方法也有兩種常見的做法,一種是在單獨啟動的 Qt Designer 中設計程序界面, 制作完成后保存成.ui 文件(一種基于 XML 的文件格式),然后再在 IDE 中把它集成進來; 另外一種是直接在 IDE 中使用 Qt Designer,由于我們使用的 IDE 大都將 Qt Designer 的主要功能集成了進來,所以這兩種做法其實區別不大,就看大家的喜好了。 下面仍以 Qt Creator 為例,使用這種方法時,一般遵循如下步驟: + 創建窗體并在窗體中放置各種窗口部件 + 設置窗口部件的屬性 + 對窗體進行布局設計 + 設置各個窗口部件的 Tab 順序 + 創建信號和槽 + 連接信號和槽 + 編寫代碼(如果需要的話) + 編譯、鏈接、運行程序 1.建立新工程 依次點擊【File】→【New...】→【Projects】→【Qt4 Gui Application】,如圖 6- 14 所示,點擊【OK】按鈕進入下一步設置。 ![](https://box.kancloud.cn/2016-01-22_56a1a14f93709.png) 圖 6-21 建立新工程 接下來仍舊是設置項目的名稱和目錄位置,正確設置即可,我們這里仍舊是 helloqt, 如圖 6-22 所示,點擊【Next】按鈕進入下一步。 ![](https://box.kancloud.cn/2016-01-22_56a1a14fa9cb8.png) 圖 6-22 設置項目的名稱和目錄位置 接下來需要設置你的應用程序想要包含的 Qt 模塊,當你選擇了某個模塊后,它的頭文 件就會在程序中被自動包含了。如圖 6-23 所示,其中 QtCore Module 和 QtGui Module 是 必需的,缺省已經選擇了。我們這個程序并不需要包含其他的功能,選擇缺省設置,點擊【Next】按鈕進入下一步。 ![](https://box.kancloud.cn/2016-01-22_56a1a14fc97e6.png) 圖 6-23 選擇需要的 Qt 模塊 下面我們需要設置應用程序的類型,這里是通過選擇你建立的類的基類來體現的,共 有 3 種選擇:QMainWindow、QWidget、QDialog。也就是說,我們的應用程序的骨干類是子 類化這 3 種類其中的一種。這里我們以選擇基類為 QWidget,其它選項選擇缺省值,如圖6-24 所示,點擊【Next】按鈕進入下一步。注意這里需要將 【Generate form】選項選上, 否則將不會產生.ui 文件,這就和第 2 種方法是一樣的了。 ![](https://box.kancloud.cn/2016-01-22_56a1a14fe48ce.png) 圖 6-24 設置應用程序的類型 接下來展示的是要建立的工程的基本信息。我們的工程由主要由 5 個文件組成: main.cpp、widget.h、widget.cpp、widget.ui 和 helloqt.pro。其中 main.cpp 是主程序 文件,其中主要包含了 main()函數,前面我們已經講到,它是應用程序的入口; widget.ui 是程序界面文件,它是基于 xml 格式的,它描述了界面的布局信息; widget.h 和 widget.cpp 是基于 widget.ui 產生的界面實體類;helloqt.pro 是工程文件,其中包含了 工程的基本信息,它能夠被 qmake 所識別。點擊【Finish】按鈕,就完成了工程的設置。 ![](https://box.kancloud.cn/2016-01-22_56a1a1500d15a.png) 圖 6-25 生成的工程信息 ![](https://box.kancloud.cn/2016-01-22_56a1a15024ee3.png) 圖 6-26 生成的工程概覽 生成的工程如圖 6-26 所示,如果想查看或修改某個文件的內容,在該文件上雙擊鼠標 左鍵即可在右面的代碼瀏覽和編輯區內實現。 2\.創建窗口部件并設置屬性 用鼠標左鍵雙擊 widget.ui 文件,Qt Creator 將把 Qt Designer 打開并集成到框架 內,如圖 6-27 所示,是不是很熟悉,與我們在第 5 章介紹的單獨啟動的 Qt Designer 并沒 有什么不一樣。 ![](https://box.kancloud.cn/2016-01-22_56a1a15033bf1.png) 圖 6-27 集成 Qt Designer 的 Qt Creator 設置 Widget 的 WindowTitle 屬性為:Hello Qt!。在窗體上放置一個 Push Button 窗 體部件,并把它的 text 屬性設置為:Hello Qt!。然后手動調整一下 Widget 和 Button 的 大小,不必太費力氣,只要不是太難看就可。關于設置屬性的方法在第 5 章中已經有詳細的講述,這里不再贅述。最后設置完成的界面如圖 6-28 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a1504f213.png) 圖 6-28 初步設置好的界面 3\.設計布局和 Tab 順序 由于程序的界面元素比較少,我們選擇水平布局,再設置 Tab 順序,完成后的界面如 圖 6-29 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a1505d69e.png) 圖 6-29 設置布局和 Tab 順序 4\.創建并連接信號與槽 按照第 5 章介紹的方法,按下 F4 鍵,拖動鼠標左鍵,選擇 pushButton 的 clicked()信 號,以及 Widget 的 close()槽,并連接它們,完成后的效果如圖 6-30 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a1506d5b1.png) 圖 6-30 創建并連接信號和槽 5\.編譯運行程序 依次執行 qmake、Build(或 Build All)、Run,程序運行后的效果如圖 6-31 所示。 ![](https://box.kancloud.cn/2016-01-22_56a1a15079bca.png) 圖 6-31 程序運行效果 估計讀者朋友也看出來了,這個程序運行的效果與前面的不完全一樣。這也正是我想 說明的,Qt Designer 并不是“為所欲為”的,比如這里我們就無法在其中設計出與第 1 種 手寫代碼完全一致的界面來,除非我們對其產生的代碼再進行手動修改。 實際上,在進行工程開發時,尤其是面對復雜的大型應用程序時,程序員完全采用手 寫代碼的時候很少見,而完全使用 Qt Designer 設計界面的情形也不多,更多情況下往往 是將兩者結合起來使用。但無論怎樣,第 1 種方法都是最基本的,只有對 Qt 的基本原理很 清楚,對 qmake 的基本語法掌握的很熟練,才能夠游刃有余的開發 Qt 應用程序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看