亚洲精品美女久久久久久久-四川少妇搡bbw搡bbbb-精品免费国产一区二区三区四区,差差差很疼30分钟的视频,蜜桃成人无码区免费视频网站,免费人成视频x8x8

18600329666

咨詢技術(shù)專家

掃一掃
與技術(shù)專家在線溝通

Menu
QT客戶端開發(fā)之創(chuàng)建并使用Qt自定義控件
QT客戶端開發(fā)之創(chuàng)建并使用Qt自定義控件,QT這個(gè)C++框架雖然提供較多的界面布局組件,但是實(shí)際開發(fā)QT庫(kù)中自帶的組件往往不能滿足開發(fā)需要,需要我們自定義組件
在使用Qt Designer設(shè)計(jì)窗體界面時(shí),我們可以使用Widget Box里的窗體控件非常方便的繪制界面,比如拖進(jìn)去一個(gè)按鈕,一個(gè)文本編輯器等。雖然Qt Designer里的控件可以滿足我們大部分的需求,但是有時(shí)候,也會(huì)產(chǎn)生一些特殊的需要,比如一個(gè)輸入框,我們要輸入的是經(jīng)緯度,此時(shí)就會(huì)有兩種輸入方式,一種是小數(shù)形式,一種是度分秒的形式,此時(shí)只使用一個(gè)簡(jiǎn)單的LineEdit是無(wú)法滿足需求的。我們?cè)O(shè)想構(gòu)造這樣一個(gè)輸入控件,它可以支持浮點(diǎn)數(shù)輸入,同時(shí)它還具有一個(gè)屬性,更改這個(gè)屬性可以使其切換為經(jīng)緯度輸入形式。如果我們的多個(gè)窗體上都需要輸入經(jīng)緯度,那么構(gòu)造這樣一個(gè)控件,將會(huì)非常方便。下面就以此為例,講解一下如何創(chuàng)建自定義的窗體控件。
第一步:創(chuàng)建QtDesigner自定義控件工程
      打開Qt Creator,創(chuàng)建一個(gè)Qt 設(shè)計(jì)師自定義控件,如下圖所示:
 
      根據(jù)向?qū)崾荆瑒?chuàng)建好工程,這里取名為L(zhǎng)ogLatEdit,工程目錄如下圖所示:
 
第二步:編譯控件工程
      為了淌通整個(gè)自定義控件的編寫流程,我們先不做任何更改,切換為Release版本,直接編譯一下。
第三步:部署插件
      編譯完成后,在輸出目錄下,將生成的dll文件和lib文件一起拷貝到Qt的插件目錄下,以我使用的Qt 4.8.4為例,在Qt 4.8.4的安裝目錄D:Qt4.8.4下,找到plugins目錄,在其中找到designer目錄,然后把dll和lib放進(jìn)去,完整路徑為:D:Qt4.8.4pluginsdesigner。之后,啟動(dòng)D:Qt4.8.4bin下的designer.exe,創(chuàng)建一個(gè)窗體,此時(shí)就會(huì)發(fā)現(xiàn)在左側(cè)的Widget Box里出現(xiàn)了我們自己的LogLatEdit控件,我們可以像使用其它控件一樣,把我們自己的控件拖繪到窗體上,如下圖所示:
 
      如果自定義控件沒(méi)有出現(xiàn)在Widgetbox里,那么此時(shí)你可以通過(guò)【幫助-關(guān)于插件】菜單,打開插件信息對(duì)話框,點(diǎn)擊刷新按鈕,只要你沒(méi)有忘記把dll和lib文件拷貝到正確的位置,插件都會(huì)自動(dòng)識(shí)別并加載。對(duì)于其它版本的Qt也一樣,比如我自己的電腦里安裝了好幾個(gè)版本的Qt,對(duì)于其它版本的Qt,做法也是一樣,只需要把插件工程生成的dll和lib文件放置到相應(yīng)版本的插件目錄下去即可。
       到此,我們就理清了如何創(chuàng)建一個(gè)自定義控件,并且知道了如何部署、加載并使用自定義控件。下面我們開始編寫我們需要的控件,對(duì)于只想了解自定義控件開發(fā)過(guò)程的讀者,至此就已經(jīng)知道如何做了,那么后面的內(nèi)容您可以略過(guò)不讀了。
未完,待續(xù)。
 
   控件編寫完畢以后,把生成的dll和lib文件一起拷貝到Qt安裝目錄下的插件目錄里,比如我安裝在D盤里的Qt 4.8.4,路徑為:D:Qt4.8.4pluginsdesigner,拷貝進(jìn)去以后,這個(gè)插件就可以被Qt Designer加載了,此時(shí)這個(gè)自定義控件就可以像普通的控件一樣使用了。當(dāng)然如有必要,還可以給這個(gè)控件添加一些信號(hào)和槽,另外按照經(jīng)緯度的取值范圍不同,做一下區(qū)分經(jīng)度和維度的處理,本例中不需要這么復(fù)雜,就不再深入探索了,下面是使用自定義的經(jīng)緯度輸入控件的效果:

 
       到目前為止,我們已經(jīng)可以在Qt Designer中使用自定義的控件繪制界面了,但是這個(gè)時(shí)候,事情還沒(méi)有完,因?yàn)槭褂肣tCreator時(shí),會(huì)發(fā)現(xiàn)其界面設(shè)計(jì)器中并沒(méi)有我們的自定義控件。另外當(dāng)我們用Qt Designer繪制完控件后,編譯時(shí)會(huì)發(fā)生找不到“loglatedit.h”頭文件的編譯錯(cuò)誤。這個(gè)問(wèn)題很容易理解,首先我們可以想到的是Qt Creator和Qt Designer的自定義控件目錄是不同的,我自己的機(jī)器里,Qt和Qt Creator的安裝目錄如下:
 
       當(dāng)我把自定義控件的dll和lib文件拷貝到D:Qt4.8.4pluginsdesigner目錄下,再啟動(dòng)D:Qt4.8.4bin目錄下的designer.exe,這個(gè)插件可以加載到Widget Box里面去,但是如果我啟動(dòng)D:Qtqtcreator-2.8.1bin目錄下的Qt Creator,我們的插件并不會(huì)出現(xiàn)在Qt Creator的設(shè)計(jì)器中。因此,對(duì)于Qt Creator,我們也需要執(zhí)行以下控件的安裝,那么具體要安裝到哪里去呢?經(jīng)過(guò)在Qt Creator安裝目錄下一番查找,發(fā)現(xiàn)D:Qtqtcreator-2.8.1binpluginsdesigner這個(gè)目錄下存在和D:Qt4.8.4pluginsdesigner目錄下同名的dll文件,于是我們猜測(cè)這個(gè)目錄就是Qt Creator的控件安裝目錄,接下來(lái)拷貝loglateditplugin.dll到這個(gè)目錄下,之后重新打開Qt Creator,發(fā)現(xiàn)自定義控件加載成功了,于是第一個(gè)問(wèn)題解決了。
 
       對(duì)于第二個(gè)問(wèn)題,我們很容易想到使用一個(gè)動(dòng)態(tài)庫(kù)時(shí),除了要有dll和lib文件外,還需要頭文件,而對(duì)于某一版本的Qt SDK,其界面相關(guān)的頭文件都放置在QtGui目錄下,于是我將工程中經(jīng)緯度輸入控件的頭文件loglatedit.h拷貝到D:Qt4.8.4includeQtGui目錄下,再次試驗(yàn),發(fā)現(xiàn)編譯可以通過(guò),但是連接失敗,嘗試將相應(yīng)的lib文件放到D:Qt4.7.4lib目錄下并且把該lib庫(kù)添加為工程的依賴庫(kù),依然連接失敗。這表明Qt的自定義控件工程并沒(méi)有導(dǎo)出我們的自定義控件,因此其生成的庫(kù)文件loglateditplugin.lib里并沒(méi)有自定義控件的信息。因此要使用自定義控件,只能引入源碼。
通過(guò)以上實(shí)驗(yàn),總結(jié)一下具體的做法,列舉如下:
1.        創(chuàng)建Qt 設(shè)計(jì)師自定義控件工程,編寫自定義控件;
2.        拷貝release版的dll和lib文件到Qt Designer的插件目錄下,如D:Qt4.8.4pluginsdesigner,這樣自定義控件即可在Qt Designer中使用;
3.        拷貝dll文件到Qt Creator的集成Qt Designer的插件目錄下,如:D:Qtqtcreator-2.8.1binpluginsdesigner,使集成于Qt Creator中的Qt Designer可以加載并使用該控件;
4.        拷貝自定義控件的頭文件和源文件到使用自定義控件的工程中,并且添加到工程里面去,這樣就可以正確編譯并連接了;