Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)_第1頁(yè)
Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)_第2頁(yè)
Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)_第3頁(yè)
Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)_第4頁(yè)
Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Qt信號(hào)自定義槽函數(shù)的實(shí)現(xiàn)目錄使用無(wú)參數(shù)信號(hào)與槽使用有參信號(hào)傳遞點(diǎn)擊按鈕觸發(fā)信號(hào)匿名函數(shù)與槽Qt中實(shí)現(xiàn)自定義信號(hào)與槽函數(shù),信號(hào)用于發(fā)送并觸發(fā)槽函數(shù),槽函數(shù)則是具體的功能實(shí)現(xiàn),如下我們以老師學(xué)生為例子簡(jiǎn)單學(xué)習(xí)一下信號(hào)與槽函數(shù)的使用方法。

使用無(wú)參數(shù)信號(hào)與槽

首先定義一個(gè)teacher類,該類中用于發(fā)送一個(gè)信號(hào),其次student類,定義用于接收該信號(hào)的槽函數(shù),最后在widget中使用emit觸發(fā)信號(hào),當(dāng)老師說(shuō)下課時(shí),學(xué)生請(qǐng)客吃飯。

teacher.h中只需要定義信號(hào)。定義一個(gè)voidhungry();信號(hào)。

#ifndefTEACHER_H

#defineTEACHER_H

#includeQObject

classTeacher:publicQObject

Q_OBJECT

public:

explicitTeacher(QObject*parent=nullptr);

signals:

//定義一個(gè)信號(hào),信號(hào)必須為void類型,且信號(hào)不能實(shí)現(xiàn)

voidhungry();

#endif//TEACHER_H

student中需要定義槽聲明,并實(shí)現(xiàn)槽。

student.h

#ifndefSTUDENT_H

#defineSTUDENT_H

#includeQObject

classStudent:publicQObject

Q_OBJECT

public:

explicitStudent(QObject*parent=nullptr);

signals:

publicslots:

//自定義槽函數(shù)

//槽函數(shù)必須定義且必須要聲明才可以使用

voidtreat();

#endif//STUDENT_H

student.cpp

#include"student.h"

#includeQDebug

Student::Student(QObject*parent):QObject(parent)

//槽函數(shù)的實(shí)現(xiàn)過程如下

voidStudent::treat()

qDebug()"請(qǐng)老師吃飯";

}

Widget.h定義信號(hào)發(fā)送函數(shù),與類

#ifndefWIDGET_H

#defineWIDGET_H

#includeQWidget

#include"student.h"

#include"teacher.h"

classWidget:publicQWidget

Q_OBJECT

public:

Widget(QWidget*parent=nullptr);

~Widget();

//定義學(xué)生與老師類

Teacher*zt;

Student*st;

//定義信號(hào)發(fā)送函數(shù)

voidclassIsOver();

#endif//WIDGET_H

Widget.cpp具體實(shí)現(xiàn)

#include"widget.h"

Widget::Widget(QWidget*parent):QWidget(parent)

zt=newTeacher(this);

st=newStudent(this);

//zt向st發(fā)送信號(hào),信號(hào)是Teacher::hungry處理槽函數(shù)是Student::treat

connect(zt,Teacher::hungry,st,Student::treat);

classIsOver();

Widget::~Widget()

//觸發(fā)信號(hào)

voidWidget::classIsOver()

emitzt-hungry();

}

使用有參信號(hào)傳遞

只需要再無(wú)參基礎(chǔ)上改進(jìn)

widget.cpp

#include"widget.h"

Widget::Widget(QWidget*parent):QWidget(parent)

zt=newTeacher(this);

st=newStudent(this);

void(Teacher::*teacherPtr)(QString)=Teacher::hungry;

void(Student::*studentPtr)(QString)=Student::treat;

connect(zt,teacherPtr,st,studentPtr);

classIsOver();

Widget::~Widget()

//觸發(fā)信號(hào)

voidWidget::classIsOver()

emitzt-hungry("kao'leng'mian烤冷面");

}

student.cpp

#include"student.h"

#includeQ

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論