在qt中是使用訊號與槽的機制來完成事件的響應過程的。網上qt的開發基於qt creator的資料比較多,基於vs下的資料除了其環境配置方面的外就剩下很少了。開始以為2者環境下的開發方式相同,後面稍微接觸了下發現還是有微妙的區別的,qt在vs下畢竟是add-in嵌入的,用起來不如creator中方便,比如對某控制項而已不能自動go to slot,所以一些固定格式的**需要自己手動新增,幸運的是,2者下的開發大致相同。
按照網頁教程分別完成下面步驟:
新建乙個qt應用程式框架
用qt設計師設計主視窗(其實也是乙個對話方塊視窗),主視窗包括1個qlistwidget,2個pushbutton,2個qlabel。
設計乙個」新增使用者位址」對話方塊介面,包括2個qlabel,2個qlinedit,1個qpushbutton。
實現主視窗中add按鈕的顯示」新增使用者位址」介面,並且響應該介面中的使用者名稱輸入和ok按鈕。這一部分要特別注意,除了實現功能**外,還需自己手動新增一些其他的**(qt creator可以自動新增,vs下找了很久沒有發現)。我們需要在3個地方新增**,第1個是在addressbook.**件下新增乙個槽函式宣告,即屬於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 5.9.2 版本,qobject connect 常用的形式為 connect sender,signal,receiver,slot connect 一般會使用前面四個引數,第乙個是發出訊號的物件,第二個是傳送物件發出的訊號,第三個是接收訊號的物件,第四個是接收物件在接收到訊號之後所需要呼叫...
VS下Qt訊號與槽的初體驗
在qt中是使用訊號與槽的機制來完成事件的響應過程的。網上qt的開發基於qt creator的資料比較多,基於vs下的資料除了其環境配置方面的外就剩下很少了。開始以為2者環境下的開發方式相同,後面稍微接觸了下發現還是有微妙的區別的,qt在vs下畢竟是add in嵌入的,用起來不如creator中方便,...
Qt學習之路 2 初探訊號槽
1 qobeject是所有類的根。2 connect 物件a,動作1,物件b,動作2 的意思就是當物件a發生動作1的時候,物件b就發生動作2。3 有signal和slot的地方,必須要有qobject,所以是qobject connect。4 還有一種初始化qpushbutton的方法 qpushb...