在使用Qt Designer設計窗體界面時,我們可以使用Widget Box里的窗體控件非常方便的繪制界面,比如拖進去一個按鈕,一個文本編輯器等。雖然Qt Designer里的控件可以滿足我們大部分的需求,但是有時候,也會產生一些特殊的需要,比如一個輸入框,我們要輸入的是經緯度,此時就會有兩種輸入方式,一種是小數形式,一種是度分秒的形式,此時只使用一個簡單的LineEdit是無法滿足需求的。我們設想構造這樣一個輸入控件,它可以支持浮點數輸入,同時它還具有一個屬性,更改這個屬性可以使其切換為經緯度輸入形式。如果我們的多個窗體上都需要輸入經緯度,那么構造這樣一個控件,將會非常方便。下面就以此為例,講解一下如何創建自定義的窗體控件。
第一步:創建QtDesigner自定義控件工程
打開Qt Creator,創建一個Qt 設計師自定義控件,如下圖所示:
根據向導提示,創建好工程,這里取名為LogLatEdit,工程目錄如下圖所示:
第二步:編譯控件工程
為了淌通整個自定義控件的編寫流程,我們先不做任何更改,切換為Release版本,直接編譯一下。
第三步:部署插件
編譯完成后,在輸出目錄下,將生成的dll文件和lib文件一起拷貝到Qt的插件目錄下,以我使用的Qt 4.8.4為例,在Qt 4.8.4的安裝目錄D:\Qt\4.8.4下,找到plugins目錄,在其中找到designer目錄,然后把dll和lib放進去,完整路徑為:D:\Qt\4.8.4\plugins\designer。之后,啟動D:\Qt\4.8.4\bin下的designer.exe,創建一個窗體,此時就會發現在左側的Widget Box里出現了我們自己的LogLatEdit控件,我們可以像使用其它控件一樣,把我們自己的控件拖繪到窗體上,如下圖所示:
如果自定義控件沒有出現在Widgetbox里,那么此時你可以通過【幫助-關於插件】菜單,打開插件信息對話框,點擊刷新按鈕,只要你沒有忘記把dll和lib文件拷貝到正確的位置,插件都會自動識別並加載。對於其它版本的Qt也一樣,比如我自己的電腦里安裝了好幾個版本的Qt,對於其它版本的Qt,做法也是一樣,只需要把插件工程生成的dll和lib文件放置到相應版本的插件目錄下去即可。
到此,我們就理清了如何創建一個自定義控件,並且知道了如何部署、加載並使用自定義控件。下面我們開始編寫我們需要的控件,對於只想了解自定義控件開發過程的讀者,至此就已經知道如何做了,那么后面的內容您可以略過不讀了。未完,待續。