QT 信号与槽 最简单例子
2015-05-14 15:59
232 查看
QT 信号与槽 最简单例子
main.cpp 和 my_head.h源码:
[cpp] view
plaincopy
#ifndef MY_HEAD_H
#define MY_HEAD_H
#include <stdio.h>
#include <QObject>
//EastonWoo
class A : public QObject //QObject::connect是在QObject定义的,继承一下。 <span style="color:#ff0000;">注意: 如果类A 本身就已经继承过QObject了,就不用再继承了,你可以这样查看是否已继承过:把光标移动到类A,右键,选择"Open Type Hierarchy",或直接按Ctrl+Shift+T,就可以查看到类的继承关系了。</span>
[cpp] view
plaincopy
{
Q_OBJECT //信号和槽要用到的宏,要加上
public:
void test()
{
send_msg();
}
signals: //信号关键字
void send_msg(); //发射信号函数,带的参数必须和槽一样。声明一下就可以了。
};
class B : public QObject
{
Q_OBJECT
public slots: //槽关键字
void recv_msg() //
{
printf("hello\n");
}
};
//值得注意的是,凡是信号和槽的定义关键字都在头文件里定义
//如Q_OBJECT,signal:,public slots:,声明如void send_msg();void recv_msg();
#endif // MY_HEAD_H
[cpp] view
plaincopy
#include "my_head.h"
//EastonWoo
int main()
{
printf("start...\n");
A send_a;
B recv_b;
QObject::connect(&send_a,SIGNAL(send_msg()),&recv_b,SLOT(recv_msg()));
send_a.test();
return 0;
}
qmain一下:
运行结果:
/home/user/hello/hello 启动中...
start...
hello
/home/user/hello/hello 退出,退出代码: 0
{1 ?}
main.cpp 和 my_head.h源码:
[cpp] view
plaincopy
#ifndef MY_HEAD_H
#define MY_HEAD_H
#include <stdio.h>
#include <QObject>
//EastonWoo
class A : public QObject //QObject::connect是在QObject定义的,继承一下。 <span style="color:#ff0000;">注意: 如果类A 本身就已经继承过QObject了,就不用再继承了,你可以这样查看是否已继承过:把光标移动到类A,右键,选择"Open Type Hierarchy",或直接按Ctrl+Shift+T,就可以查看到类的继承关系了。</span>
[cpp] view
plaincopy
{
Q_OBJECT //信号和槽要用到的宏,要加上
public:
void test()
{
send_msg();
}
signals: //信号关键字
void send_msg(); //发射信号函数,带的参数必须和槽一样。声明一下就可以了。
};
class B : public QObject
{
Q_OBJECT
public slots: //槽关键字
void recv_msg() //
{
printf("hello\n");
}
};
//值得注意的是,凡是信号和槽的定义关键字都在头文件里定义
//如Q_OBJECT,signal:,public slots:,声明如void send_msg();void recv_msg();
#endif // MY_HEAD_H
[cpp] view
plaincopy
#include "my_head.h"
//EastonWoo
int main()
{
printf("start...\n");
A send_a;
B recv_b;
QObject::connect(&send_a,SIGNAL(send_msg()),&recv_b,SLOT(recv_msg()));
send_a.test();
return 0;
}
qmain一下:
运行结果:
/home/user/hello/hello 启动中...
start...
hello
/home/user/hello/hello 退出,退出代码: 0
{1 ?}
相关文章推荐
- Qt信号槽机制的简单例子
- QT 信号与槽的简单例子
- QT 信号与槽 最简单例子
- [Qt]一个简单的Qt Widget多线程处理图像的例子
- Qt中常见控件、布局、信号和槽的简单介绍与实现
- Qt实现多线程的简单例子(VS2015Professional+Qt5.7.1)
- golang信号处理及一个简单例子实现
- qt 信号 槽 例子 代码
- sigSlot 简单的信号插槽例子
- Qt学习 之 Socket通信(世界上最简单的例子了)
- QT 自定义消息(超级简单的一个例子)
- qt qml和c++交互的一个简单例子
- Qt学习 之 Socket通信(一个简单的例子)
- QT 简单的计算器例子
- QT 子窗口监听主窗口信号(超级简单,但是好用,比如主窗口移动的时候,子窗口不要再继续处理任务)
- ubuntu12.04+qtcreator+opencv2.4.9的一个简单例子
- Qt菜单、文件、信号与槽最简单程序
- Qt学习 之 Socket通信(一个简单的例子)
- Qt中Json循环渐进的简单例子分享