1、概述 Qt 允許程序員不通過任何設計工具,以純粹的 C++代碼來設計一個程序。但是更多的 程序員更加習慣于在一個可視化的環境中來設計程序,尤其是在界面設計的時候。這是因為 這種設計方式更加符合人類思考的習慣,也比書寫代碼要快速的多。 Qt 也提供了這樣一個可視化的界面設計工具:Qt 設計器(Qt Designer)。其開始界面 如上圖所示。Qt 設計器可以用來開發一個應用程序全部或者部分的界面組件。以 Qt 設計器 生成的界面組件最終被變成 C++代碼,因此 Qt 設計器可以被用在一個傳統的工具鏈中,并 且它是編譯器無關的。 在不同的平臺上啟動 Qt Designer 的方式有一定差別。在 Windows 環境下你可以在“開 始->程序->Qt”這個組件中找到 Qt Designer 的圖標并點擊;在 Unix 環境下,在命令行模式 下輸入命令: “designer”;在 Mac Os 下,在 X Finder 下雙擊 Designer 圖標。 默認情況下,Qt Designer 的用戶界面是由幾個頂級的窗口共同組成的。如果你更習慣 于一個 MDI-style 的界面(由一個頂級窗口和幾個子窗口組成的界面),可以在菜單 Edit->User Interface Mode 中選擇 Docked Window 來切換界面。上圖顯示的就是 MDI-style 的界面風格。 2、開始學習 在這個小節中,我們將使用 Qt Designer 來生成一個對話框: Go-to-cell。對話框如下圖 所示。 不管我們是使用 Qt Designer 還是編碼來實現一個對話框,都包括以下相同的步驟: 1)、創建并初始化子窗口部件。 2)、將子窗口部件放置到布局當中。 3)、對 Tab 的順序進行設置。 4)、放置信號和槽的連接。 5)、完成對話框的通用槽的功能。 現在開始工作。首先在 Qt Designer 的菜單中選擇“File->New Form”。程序將彈出一 個窗口如下: 可以看到在窗口左上方有一個“templates\forms”的菜單,下面有四個可供選擇的模板。 第一個和第二個都是對話框,區別在于對話框中按鈕的位置不同。第三個是主窗口,第四 個是窗口部件。本例中我們需要選擇第四個選項(Widget)。 現在你應該可以看到 Qt Designer 為你生成了一個窗口,標題欄是“Untitled”(也許你覺得第一個模板更加適合我們的例子, 不過,在這里,我們將手動添加“OK”和“Cancel”這兩個按鈕)。 我們按照上面講過的順序來設計這個窗口。首先需要生成子窗口部件并將它們放置 在工作臺上。在 Qt Designer 工作界面的左側,我們可以看到很多程序設計經常用到的窗口 部件。如果你需要它們中的那一個,用鼠標把它拖到工作臺上就可以了。我們在菜單“Display Widgets”中選擇一個“Label”,在菜單“Input Widgets”中選擇一個“Line Edit”,在菜單 “Spacers”中選擇一個“Horizontal Spacer”(這個空白組件在最終形成的窗口中是不可見的, 在 Qt Designer 中,空白組件的樣子就像是一個藍色的彈簧),在菜單“Buttons”中選擇兩個 “Push Button”。按照下圖的位置,將它們擺放起來。 你可以看到,我們的工作界面顯的太大了一些,可以用鼠標拉住邊框讓它改變大小, 直到你滿意為止。一個類似下圖的組件是不是已經出現了?記住不要花費太多的時間來擺放 這些窗口部件的位置,只要大概類似就可以了,因為他們并不是不可調整的。Qt 的布局管 理器將會對他們的位置和大小自動進行一些優化。 現在我們已經創建了這些子窗口部件,并把他們放置在了合適的位置,接下來要做 的就是初始化他們。這需要設定這些子窗口的屬性。在 Qt Designer 工作界面的右側也同樣 有一些窗口,這些就是屬性窗口。 可以在這些窗口中找到所有部件需要設置的屬性,并更改 它們,就可以達到我們的目的了。 1)、點擊 TextLabel,確認它的“objectName”屬性是“label”,然后將它的“text”屬 性設置為“&Cell Location”。 2)、點擊 line editor (窗口中的空白編輯框),確認它的“objectName”屬性是“lineEdit”。 3)、點擊第一個按鈕(左側),將其“objectName”屬性設置為“OKButton”,“enable” 屬性設置為“false”,“text”屬性設置為“OK”,“default”屬性設置為“true”。 4)、點擊第二個按鈕(右側),將其“objectName”屬性設置為“cancelButton”,“text” 屬性設置為“Cancel”。 5)、點擊工作平臺的背景,這樣我們可以選擇整個的界面。這也是一個窗口,也擁有 自己的屬性。我們把它的“ objectName”屬性設置為“GoToCellDialog”,“windowtTitle”屬 性設置為“Go to Cell”。 完成后的 Form 變成了下圖的形式: 接下來我們給 Label 設置一個伙伴(buddy),在這個例子中, Label 的伙伴當然是后面 的字符編輯框 line editor。在 Qt Designer 的菜單中進行選擇:Edit->Edit Buddies。這樣我們 進入 Buddy 模式,可以設置子窗口的伙伴了。點擊 Label,Label 將會變成紅色的,同時出 現一條線,將這條線拖拽到后面的 line editor 上,然后松開。這時兩個窗口都將變成紅色的, 中間有一條紅線相連。移動鼠標到別處并點擊,窗口將變成藍色的。這說明我們已經設置成 功了(如果設置錯誤,則可以用鼠標在連接窗口的線條上點擊,這時相連的窗口又會變成紅 色的,此時按 Delete 鍵就可以取消設置)。選擇:Edit->Edit Widget,可以退出這個模式,回 到主菜單中。如下圖所示: 接下來我們對工作臺上的各個子窗口進行布局: 1)、 點擊標簽“Cell Location”,按住 Shift 鍵,再點擊后面的字符編輯框“line editor”, 這樣它們兩個窗口被同時選中。選擇菜單:Form->Lay Out Horizontally。這樣這兩個窗口將 被一個紅色邊框的矩形包圍。 2)點擊空白子窗口“Spacer”,按住 Shift 鍵,再點擊后面的兩個按鈕,同時選定這三 個窗口,然后選擇菜單:Form->Lay Out Horizontally。這樣這三個窗口將被一個紅色邊框的 矩形包圍。 3)、點擊工作平臺的背景,取消任何已經選擇的組件,然后選擇:Form->Lay Out Vertically。這樣我們可以將第 1 步和第 2 步所生成的兩個水平布局進行垂直布局。 4)、選擇菜單:Form->Adjust Size。這樣我們可以調整主窗口的大小。最后效果如下
|