在qt中是使用訊號與槽的機制來完成事件的響應過程的。網上qt的開發基於qt creator的資料比較多,基於vs下的資料除了其環境配置方面的外就剩下很少了。開始以為2者環境下的開發方式相同,後面稍微接觸了下發現還是有微妙的區別的,qt在vs下畢竟是add-in嵌入的,用起來不如creator中方便,比如對某控制項而已不能自動go to slot,所以一些固定格式的**需要自己手動新增,幸運的是,2者下的開發大致相同。
程式實現的功能是:新增和刪除使用者的姓名和其email位址。其有2個介面,分別為1個主視窗介面和乙個對話新增使用者名稱和email視窗介面。
按照網頁教程分別完成下面步驟:
新建乙個qt應用程式框架
用qt設計師設計主視窗(其實也是乙個對話方塊視窗),主視窗包括1個qlistwidget,2個pushbutton,2個qlabel。
設計乙個」新增使用者位址」對話方塊介面,包括2個qlabel,2個qlinedit,1個qpushbutton。
為」新增使用者位址」介面的ok按鈕增加訊號與槽的聯絡。此時可以在ui設計師的編輯\訊號槽模式下進行,具體方法是拖動ok按鈕釋放後選擇對應的訊號與槽,見網頁詳細介紹。
實現主視窗中add按鈕的顯示」新增使用者位址」介面,並且響應該介面中的使用者名稱輸入和ok按鈕。這一部分要特別注意,除了實現功能**外,還需自己手動新增一些其他的**(qt creator可以自動新增,vs下找了很久沒有發現)。我們需要在3個地方新增**,第1個是在addressbook.h檔案下新增乙個槽函式宣告,即屬於private slots型別,新增後如下所示:
第2個新增地方為在addressbook.cpp中新增adddialog.h標頭檔案。
最後乙個地方為addressbook.cpp實現add按鈕功能,其**為(為什麼cnblog的**摺疊功能不能用呢?):
void6. 用同樣的方法完成主視窗中顯示選中的item的功能addressbook::on_addbutton_clicked()}}
7. 用同樣的方法完成」新增使用者位址」介面的delete按鈕功能。
下面為幾個主要檔案的整體**:
adddialog.h:
#ifndef adddialog_haddressbook.h:#define adddialog_h#include
#include
"ui_adddialog.h
"class adddialog : public qdialog, public
ui::adddialog
;#endif
//adddialog_h
#ifndef addressbook_hadddialog.cpp:#define addressbook_h#include
#include
"ui_addressbook.h
"class addressbook : public
qmainwindow
;#endif
//addressbook_h
#include "addressbook.cpp:adddialog.h
"adddialog::adddialog(qwidget *parent)
: qdialog(parent)
adddialog::~adddialog()
#include "main.cpp:addressbook.h
"#include
"adddialog.h
"addressbook::addressbook(qwidget *parent, qt::wflags flags)
: qmainwindow(parent, flags)
addressbook::~addressbook()
void
addressbook::on_addbutton_clicked()
}}void
addressbook::on_addresslist_currentitemchanged()
else
}void
addressbook::on_deletebutton_clicked()
}
#include "本次試驗的主要總結有下面2點:addressbook.h
"#include
在ut設計師介面下,且執行於編輯\訊號槽模式,如果使用圖示連線了訊號與槽之間的關係的話,則在此類中的建構函式中不需要實現connect()函式連線訊號與槽了。如果槽函式是採用系統能識別的預設函式名。比如add按鈕對於系統預設的函式名on_addbutton_clicked(),則此時連設計介面的連線線等都不需要填了,直接可以在cpp程式中**實現自己的功能即可。
標籤:
qt學習之路,
qt
qt 槽與訊號
槽就是乙個可以被呼叫處理特定訊號的函式 乙個小的qt類如下 class foo public qobject public slots void setvalue int signals void valuechanged int private int val qt中的元物件系統是用來處理物件間通...
QT訊號與槽
初學qt,覺得理解qt訊號與槽比較重要,qt很多時候都需要用到訊號和槽。發射訊號會觸發相對應的槽函式的執行。乙個訊號可以對應多個槽,多個訊號可以對應乙個槽。訊號和槽是通過connect這個方法進行建立聯絡的。qt中有些類會自帶有一些訊號和槽函式,當然訊號和槽函式也可以自己定義。下面來看下很簡單的 會...
Qt訊號與槽
訊號的定義必須在signals 保留字下,並且不需要實現 槽的定義必須在slots 保留字下,需要實現 訊號和槽通過qobject connect函式連線 當訊號被觸發時,槽函式被呼叫 需要注意的是 訊號和槽是qt的拓展,所以實現訊號和槽的類,必須是qobject的子類 實現訊號和槽的類,必須以巨集...