Qt學習之路 3 VS下Qt的訊號與槽初次體驗

2021-09-09 04:01:47 字數 2528 閱讀 5873

在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的**摺疊功能不能用呢?):  

void

addressbook::on_addbutton_clicked()}}

6. 用同樣的方法完成主視窗中顯示選中的item的功能

7. 用同樣的方法完成」新增使用者位址」介面的delete按鈕功能。

下面為幾個主要檔案的整體**:

adddialog.h:

#ifndef adddialog_h

#define adddialog_h#include

#include

"ui_adddialog.h

"class adddialog : public qdialog, public

ui::adddialog

;#endif

//adddialog_h

addressbook.h:

#ifndef addressbook_h

#define addressbook_h#include

#include

"ui_addressbook.h

"class addressbook : public

qmainwindow

;#endif

//addressbook_h

adddialog.cpp:

#include "

adddialog.h

"adddialog::adddialog(qwidget *parent)

: qdialog(parent)

adddialog::~adddialog()

addressbook.cpp:

#include "

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()

}

main.cpp:

#include "

addressbook.h

"#include

本次試驗的主要總結有下面2點:

在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...