2月 04, 2009

【翻譯】Qt Tutorial 1 - Hello World!

@
tutorials/tutorial/t1/main.cpp
tutorials/tutorial/t1/t1.pro

  第一個程式是一個簡易的 "Hello world" 範例。它僅包含了你完成並運作一個 Qt 應用程式的最少需求。下圖是這支程式的螢幕擷圖。



  下面是這支程式的完整原始碼:

 #include <QApplication>
 #include <QPushButton>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QPushButton hello("Hello world!");

     hello.show();
     return app.exec();
 }


Line by Line Walkthrough

 #include <QApplication>

  這一行引入了 QApplication 類別的定義。在每一個使用 Qt 的 GUI 程式中,都必須恰好有一個 QApplication 物件。QApplication 負責管理像是預設字體(font)與游標(cursor)等多種廣泛應用的資源。

 #include <QPushButton>

  這一行引入了 QPushButton 類別的定義。對每個屬於 Qt API 的類別中,都有一個包含其定義的同名標頭(header)檔。

  QPushButton 是一個可以按下(press)或是釋放(release)的 GUI 按鈕。它管理自己的外觀與介面(look and feel),就像其他的 QWidget 一樣。元件(widget)是一個可以處理使用者輸入與繪製圖形的使用者介面物件(user interface object)。程式設計師可以改變所有的介面外觀、許多次要屬性(像是顏色),以及這個元件的內容。一個 QPushButton 可以顯示一段文字或是一個 QIcon

 int main(int argc, char *argv[])
 {

  main() 函式是程式的進入點(entry point)。在使用 Qt 的情況下,main() 幾乎只需要在將控制權轉交給 Qt 函式庫之前,執行一些初始化的動作,Qt 函式庫就會經由事件(event)告知程式使用者的行為。

  argc 這個參數(parameter)是命令列引數(argument)的數量,而 argv 則是這些引數構成的陣列。這是一個標準的 C++ 特色。

     QApplication app(argc, argv);

  物件 app 是這支程式的 QApplication 實現(instance)。它在這裡被建立。我們傳遞 argcargv 到 QApplication 建構子(constructor)中,使其能夠處理某些標準的命令列引數(例如 X11 下的 -display)。所有被 Qt 識別的引數都會從 argv 中移除,argc 也會相應地減少。細節請參看 QApplication::arguments() 文件。

  QApplication 物件必須在任何 GUI 相關的 Qt 元件被使用前建立。

     QPushButton hello("Hello world!");

  在 QApplication 之後,這裡出現了第一個 GUI 相關程式:一個按鈕被建立了。

  這個按鈕被設定成顯示 "Hello world!" 這段文字。因為我們並沒有明確指定一個父視窗(parent window)(QPushButton 建構子的第二個參數),這個按鈕將會自己構成一個擁有外框(frame)與標題列的視窗。

  這個按鈕的大小由預設大小決定。我們可以呼叫(call) QWidget::move() 來指派(assign)元件的一個特定視窗位置,不過這裡我們讓視窗系統決定它的位置。

     hello.show();

  當你建立一個元件時,它是不可見的。你必須呼叫 QWidget::show() 使其變為可見。

     return app.exec();
 }

  這裡就是 main() 將控制權轉交給 Qt 的地方。QCoreApplication::exec() 將會在應用程式結束時返回。(QCoreApplication 是 QApplication 的基礎類別,其構成 QApplication 的核心、非 GUI 的功能,並且可以用來開發非 GUI 的應用程式。)

  在 QCoreApplication::exec() 中,Qt 接收並處理使用者與系統的事件,並將之傳遞到適當的元件中。

  你現在需要編譯並執行這支程式。


Environment Variables

  假如你是在命令列模式下開發 Qt 應用程式,你需要將 Qt 的 bin 資料夾路徑(path)加到環境變數的 PATH 中,確保 Qt 函式庫及執行檔是可以從你的環境中被取得的;這是在針對各種平台的 Installation 教學中所描述的。

  在 Windows 系統上,若是你使用開始功能表 > 所有程式 > Qt 選單中的 Command Prompt 來取得命令列工具,它會自動為你完成設置。若是你使用開始功能表 > 執行 > Command 來取得命令列工具,你就必須要自己設置 PATH 變數。


Building an application

  這個指導範例位於 Qt 的 examples/tutorials/tutorial 資料夾。假如你直接安裝 Qt 的二元檔套裝軟體(package),預先建立的這些範例也會被安裝。若你是自行創建 Qt,這些範例也會同時被建立。無論如何,你都需要自己修改或是建立範例以學習使用 Qt。

  假設你已經複製了範例的 .cpp.h 檔到另一個空資料夾中,你需要在這裡做一些改變,下一步是在這個資料夾中建立一個 Qt makefile。要建立一個 Qt makefile,需要使用 Qt 提供的 qmake 建構工具。在包含你原始碼的目錄下,執行下面兩條指令以建立 makefile:

 qmake -project
 qmake

  第一條指令告知 qmake 創建一個 project(.pro) 檔。第二條指令告知 qmake 根據 .pro 檔去創建一個特定平臺的 makefile。

  現在你可以執行 make(或是 nmake,假如你使用的是 Visual Studio),然後執行你的第一個 Qt 應用程式了!


Running this example

  當你執行這個範例,你將會看到一個顯示單一按鈕的小視窗,在按紐上,你可以讀到著名的那句:"Hello world!"。


Exercises

  試著去調整視窗大小。按下按鈕。若你是在 X11 下執行,試著去執行 -geometry 選項(舉例來說,-geometry 100x200+10+20)。


來源:Qt Tutorial 1 - Hello World!
版本:4.4.3

0 回覆:

張貼留言