自定义信号和槽
来源:互联网 发布:软件质量管理活动包括 编辑:程序博客网 时间:2024/06/05 11:06
- 发送者和接收者都需要是
QObject
的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外); - 使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;
- 槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;
- 使用 emit 在恰当的位置发送信号;
- 使用
QObject::connect()
函数连接信号和槽。
//!!! Qt4
#include <QObject>
////////// newspaper.h
classNewspaper:publicQObject
{
Q_OBJECT
publicpublic:
Newspaper(constQString&name):
m_name(name)
{
}
voidsend()const
{
emitnewPaper(m_name);
}
signals:
voidnewPaper(constQString&name)const;
private:
QStringm_name;
};
////////// reader.h
#include <QObject>
#
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//!!! Qt4
#include <QObject>
////////// newspaper.h
classNewspaper:publicQObject
{
Q_OBJECT
public:
Newspaper(constQString&name):
m_name(name)
{
}
voidsend()const
{
emitnewPaper(m_name);
}
signals:
voidnewPaper(constQString&name)const;
private:
QStringm_name;
};
////////// reader.h
#include <QObject>
#include <QDebug>
classReader:publicQObject
{
Q_OBJECT
public:
Reader(){}
publicslots:
voidreceiveNewspaper(constQString&name)const
{
qDebug()<<"Receives Newspaper: "<<name;
}
};
////////// main.cpp
#include <QCoreApplication>
#include "newspaper.h"
#include "reader.h"
intmain(intargc,char*argv[])
{
QCoreApplicationapp(argc,argv);
Newspapernewspaper("Newspaper A");
Readerreader;
QObject::connect(&newspaper,SIGNAL(newPaper(QString)),
&reader, SLOT(receiveNewspaper(QString)));
newspaper.send();
returnapp.exec();
}
- 发送者和接收者都需要是
QObject
的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外); - 使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;
- 槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;
- 使用 emit 在恰当的位置发送信号;
- 使用
QObject::connect()
函数连接信号和槽。
classReader:publicQObject
{
Q_OBJECT
public:
Reader(){}
publicslots:
voidreceiveNewspaper(constQString&name)const
{
qDebug()<<"Receives Newspaper: "<<name;
}
};
////////// main.cpp
#include <QCoreApplication>
#include "newspaper.h"
#include "reader.h"
intmain(intargc,char*argv[])
{
QCoreApplicationapp(argc,argv);
Newspapernewspaper("Newspaper A");
Readerreader;
QObject::connect(&newspaper,SIGNAL(newPaper(QString)),
&reader, SLOT(receiveNewspaper(QString)));
newspaper.send();
returnapp.exec();
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//!!! Qt4
#include <QObject>
////////// newspaper.h
classNewspaper:publicQObject
{
Q_OBJECT
public:
Newspaper(constQString&name):
m_name(name)
{
}
voidsend()const
{
emitnewPaper(m_name);
}
signals:
voidnewPaper(constQString&name)const;
private:
QStringm_name;
};
////////// reader.h
#include <QObject>
#include <QDebug>
classReader:publicQObject
{
Q_OBJECT
public:
Reader(){}
publicslots:
voidreceiveNewspaper(constQString&name)const
{
qDebug()<<"Receives Newspaper: "<<name;
}
};
////////// main.cpp
#include <QCoreApplication>
#include "newspaper.h"
#include "reader.h"
intmain(intargc,char*argv[])
{
QCoreApplicationapp(argc,argv);
Newspapernewspaper("Newspaper A");
Readerreader;
QObject::connect(&newspaper,SIGNAL(newPaper(QString)),
&reader, SLOT(receiveNewspaper(QString)));
newspaper.send();
returnapp.<span class="crayon-e" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit !important; font-stretch: inherit; font-size: inhe
0 0
- 自定义信号和槽
- 自定义信号和槽
- 自定义信号和槽
- QT4 自定义槽和信号
- QT4 自定义槽和信号
- Qt自定义信号和槽
- ]QT4 自定义槽和信号
- Qt自定义信号和槽
- Qt自定义信号和槽
- QT 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT中自定义的信号和槽
- QT4 自定义槽和信号(转)
- QT4 自定义槽和信号(转)
- 【转】QT4 自定义槽和信号
- 自定义的信号和槽注意点
- 几种java通信(rmi,http,hessian,webservice)协议性能比较
- linux常用命令
- Retrofit分析-漂亮的解耦套路
- 前端面试
- 常用排序算法稳定性、时间复杂度分析
- 自定义信号和槽
- 区块链技术 智慧城市 人工智能 -社会进步的步伐不停歇
- Spring教程--IOC(注解方式)和整合junit
- MyBatise代码自动生成时候Oralce的number类型BigDecimal问题
- EditText使用总结-1
- Android开发中isTaskRoot方法的使用情景
- 设计模式—七种结构型模式
- 机器学习实战:PCA降维 样本协方差
- 题目1180:对称矩阵