自定义信号和槽
来源:互联网 发布:什么行业需要网络推广 编辑:程序博客网 时间:2024/06/05 05:42
发送者和接收者都需要是QObject的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外);
使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;
槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;
使用 emit 在恰当的位置发送信号;
使用QObject::connect()函数连接信号和槽。
使用 emit 在恰当的位置发送信号;
使用QObject::connect()函数连接信号和槽。
//!!! 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>
#
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.exec()<span class="crayon-sy" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit !important; font-stretch: inherit; font-size: inh
0 0
- 自定义信号和槽
- 自定义信号和槽
- 自定义信号和槽
- QT4 自定义槽和信号
- QT4 自定义槽和信号
- Qt自定义信号和槽
- ]QT4 自定义槽和信号
- Qt自定义信号和槽
- Qt自定义信号和槽
- QT 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT 自定义函数 自定义信号和槽
- QT中自定义的信号和槽
- QT4 自定义槽和信号(转)
- QT4 自定义槽和信号(转)
- 【转】QT4 自定义槽和信号
- 自定义的信号和槽注意点
- Docker学习(11)------Docker 容器别名使用
- 机器学习特征选择方法
- Jquery 选择器总结
- 【IMWeb训练营作业】之todo list 练习总结
- 关于Windows下python编码问题
- 自定义信号和槽
- Mac AppStore下载报错Use the Purchases page to try again
- 题目1179:阶乘
- Windows 10 Start Menu Troubleshooter发布:修复开始菜单问题,亲测100%可以解决
- mysql SQL语句You can't specify target table ' for update in FROM clause解决
- Lua中的元表与元方法学习总结
- mysql 跨服务器数据_导入/导出 csv
- CentOS下添加Root权限用户(超级用户)方法
- 几种java通信(rmi,http,hessian,webservice)协议性能比较