Qt信号自定义槽函数的实现_第1页
Qt信号自定义槽函数的实现_第2页
Qt信号自定义槽函数的实现_第3页
Qt信号自定义槽函数的实现_第4页
Qt信号自定义槽函数的实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Qt信号自定义槽函数的实现目录使用无参数信号与槽使用有参信号传递点击按钮触发信号匿名函数与槽Qt中实现自定义信号与槽函数,信号用于发送并触发槽函数,槽函数则是具体的功能实现,如下我们以老师学生为例子简单学习一下信号与槽函数的使用方法。

使用无参数信号与槽

首先定义一个teacher类,该类中用于发送一个信号,其次student类,定义用于接收该信号的槽函数,最后在widget中使用emit触发信号,当老师说下课时,学生请客吃饭。

teacher.h中只需要定义信号。定义一个voidhungry();信号。

#ifndefTEACHER_H

#defineTEACHER_H

#includeQObject

classTeacher:publicQObject

Q_OBJECT

public:

explicitTeacher(QObject*parent=nullptr);

signals:

//定义一个信号,信号必须为void类型,且信号不能实现

voidhungry();

#endif//TEACHER_H

student中需要定义槽声明,并实现槽。

student.h

#ifndefSTUDENT_H

#defineSTUDENT_H

#includeQObject

classStudent:publicQObject

Q_OBJECT

public:

explicitStudent(QObject*parent=nullptr);

signals:

publicslots:

//自定义槽函数

//槽函数必须定义且必须要声明才可以使用

voidtreat();

#endif//STUDENT_H

student.cpp

#include"student.h"

#includeQDebug

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

//槽函数的实现过程如下

voidStudent::treat()

qDebug()"请老师吃饭";

}

Widget.h定义信号发送函数,与类

#ifndefWIDGET_H

#defineWIDGET_H

#includeQWidget

#include"student.h"

#include"teacher.h"

classWidget:publicQWidget

Q_OBJECT

public:

Widget(QWidget*parent=nullptr);

~Widget();

//定义学生与老师类

Teacher*zt;

Student*st;

//定义信号发送函数

voidclassIsOver();

#endif//WIDGET_H

Widget.cpp具体实现

#include"widget.h"

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

zt=newTeacher(this);

st=newStudent(this);

//zt向st发送信号,信号是Teacher::hungry处理槽函数是Student::treat

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

classIsOver();

Widget::~Widget()

//触发信号

voidWidget::classIsOver()

emitzt-hungry();

}

使用有参信号传递

只需要再无参基础上改进

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

//触发信号

voidWidget::classIsOver()

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

}

student.cpp

#include"student.h"

#includeQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论