訊號和槽(QT和sigslot

2021-09-08 09:42:18 字數 2710 閱讀 8516

本文在  以及  兩篇部落格的基礎上進行了一些總結。

這裡主要是在vs2010+qt4.8.1的平台上進行實驗。實現兩個窗體之間的相互操作。程式實現的功能是:新增和刪除使用者的姓名和其email位址。其有2個介面,分別為1個主視窗介面和乙個對話新增使用者名稱和email視窗介面。

按照網頁教程分別完成下面步驟:

新建乙個qt應用程式框架

用qt設計師設計主視窗(其實也是乙個對話方塊視窗),主視窗包括1個qlistwidget,2個pushbutton,2個qlabel。

設計乙個」新增使用者位址」對話方塊介面,包括2個qlabel,2個qlinedit,1個qpushbutton。

實現主視窗中add按鈕的顯示」新增使用者位址」介面,並且響應該介面中的使用者名稱輸入和ok按鈕。這一部分要特別注意,除了實現功能**外,還需自己手動新增一些其他的**(qt creator可以自動新增,vs下找了很久沒有發現)。

我們需要在4個地方新增**,

第1個是在addressbook.**件下新增乙個槽函式宣告,即屬於private slots型別,新增後如下所示:?

private:

ui::addressbookclass ui;

privateslots:

voidon_addbutton_clicked();

};

第2個新增地方為在addressbook.cpp中新增adddialog.h標頭檔案。

第3個在adddialog.h新增public ui::adddialog,如下?

classadddialog :publicqdialog,publicui::adddialog

}}之後雙擊addressbook.ui開啟設計器,在工具欄上有個選項是用於編輯訊號嘈的,新增slot「on_addbutton_clicked

」,然後把button連線到上面。

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"

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

在ut設計師介面下,且執行於編輯\訊號槽模式,如果使用圖示連線了訊號與槽之間的關係的話,則在此類中的建構函式中不需要實現connect()函式連線訊號與槽了。如果槽函式是採用系統能識別的預設函式名。比如add按鈕對於系統預設的函式名on_addbutton_clicked(),則此時連設計介面的連線線等都不需要填了,直接可以在cpp程式中**實現自己的功能即可。

Qt訊號和槽

qt將訊號和槽關聯起來的connect使用時需要注意帶相應的引數,否則會出現訊號發出後不能呼叫槽的問題,例子如下 發出訊號的宣告 signals void receiveddata uchar dat,uint len 接收訊號的槽宣告 private slots void getdata ucha...

Qt 訊號和槽

函式原型 qobject connect const qobject sender,const char signal,const qobject receiver,const char method,qt connectiontype type qt autoconnection 通常使用的con...

QT訊號和槽

qt訊號和槽 訊號和槽是一種高階介面,應用於物件之間的通訊,它是 qt 的核心特性。要正確的處理訊號和槽,必須借助乙個稱為 moc meta object compiler 的 qt 工具,該工具是乙個 c 預處理程式,它為高層次的事件處理自動生成所需要的附加 訊號和槽能攜帶任意數量和任意型別的引數...