1. 程式人生 > 實用技巧 >PyQt4 精彩例項分析 例項9 利用Qt Designer設計一個對話方塊

PyQt4 精彩例項分析 例項9 利用Qt Designer設計一個對話方塊

>>> hot3.png

http://www.linuxidc.com/Linux/2012-06/63652p9.htm 原文連結

在Qt程式設計中,程式設計師通常都是使用手動編寫Python原始碼來進行Qt程式開發,但有些程式設計師也喜歡使用視覺化的方法進行對話方塊設計,因此,Qt為習慣利用視覺化方式進行視窗程式設計的程式設計師提供了Designer,它可以給一個應用程式提供全部或者部分對話方塊。用Qt Designer設計的對話方塊和用Python寫程式碼寫成的對話方塊是一樣的,可以用作一個常用的工具,並不對編輯產生影響。使用Qt Designer可以方便快速地對對話方塊進行修改,在對話方塊經常需要變化的情況下,這是一種很好的方式。使用Qt Designer設計對話方塊一般都有如下幾個步驟:

1)建立窗體並在窗體中放置各種控制元件。

2)對窗體進行佈局設計。

3)設定各控制元件的標籤順序。

4)建立訊號和槽。

5)連線訊號和槽。

Qt Designer的啟動可以通過命令列執行designer完成,或Windows下的開始選單完成,啟動後介面如下圖所示。

Qt Designer提供如下5種表單模板可供選擇:

1)底部帶“確定”,“取消”按鈕的對話方塊窗體。

2)右側帶“確定”,“取消”按鈕的對話方塊窗體。

3)不帶按鈕的對話方塊窗體。

4)Main Window型別窗體。

5)通用窗體。

這裡選擇建立一種不帶按鈕的對話方塊窗體,接下來需要做的就是在窗體中放置各種需要的控制元件,Qt Designer的設計空間列出了所有控制元件以及各控制元件的屬性設定窗體。在窗體中放置一個Label和LineEdit,兩個PushButton和一個Horizontal Spacer控制元件,並設定種控制元件的text屬性,如下圖所示。在開始向窗體中放置控制元件時,不用太在意控制元件對齊與否,只用放置大概位置即可。

接下來對窗體的各個控制元件進行佈局設計,選擇位於同一行的所有控制元件,選擇Qt Designer選單中的“窗體”-->“水平佈局”或右擊選擇“佈局”-->“水平佈局”,然後選擇兩個水平佈局,右擊選擇“佈局”-->“柵格佈局”,完成所選控制元件的水平佈局。完成佈局設計後適當調整整個窗體的大小,以適合控制元件的大小,如下圖所示。

然後對各控制元件的標籤順序進行設定,選擇Qt Designer選單中的“編輯”--> “編輯Tab順序“,進入標籤設定模式,窗體中各個控制元件上出現一個藍色的小框,框內的數字表示該控制元件的標籤順序,即焦點順序,如下圖所示,可以單擊藍色小框修改標籤順序。完成標籤順序設定後選擇Qt Designer選單中的“編輯”-->“編輯視窗部件”離開標籤設定模式。

接下來進行訊號和槽的連線,選擇Qt Designer選單中的“編輯”-->“編輯訊號/槽”,進入訊號/槽連線模式,如下圖所示。此時單擊OK按鈕,然後拖動滑鼠,可以發現有一根紅色的類似接地線的標誌線被拖出,鬆開滑鼠,彈出訊號/槽的連線配置視窗,如下圖所示。

連線配置視窗左側列出了按鈕OK的所有訊號,右側列出了對話方塊的所有槽,選擇OK按鈕的clicked()訊號和右側的accept(),單擊“確定”按鈕,此時完成按鈕OK的訊號/槽的連線,用同樣的方式配置按鈕Cancel的訊號/槽,如下圖所示。

至此,關於Qt Designer的操作就結束了,生成一個.ui檔案,儲存為9.ui。

然後使用pyuic4命令生成一個py檔案,如下圖所示。

接下來編寫一個9.py主檔案來執行這個程式。具體實現程式碼如下:

  1. fromPyQt4.QtGuiimport*
  2. fromPyQt4.QtCoreimport*
  3. importsys
  4. importui_9
  5. classTestDialog(QDialog,ui_9.Ui_Dialog):
  6. def__init__(self,parent=None):
  7. super(TestDialog,self).__init__(parent)
  8. self.setupUi(self)
  9. app=QApplication(sys.argv)
  10. dialog=TestDialog()
  11. dialog.show()
  12. app.exec_()

執行後分別單擊OK和Cancel按鈕,執行對話方塊的accept()和reject()函式,如下圖所示。

轉載於:https://my.oschina.net/shadai/blog/699041