您的位置:首页 > 编程语言 > Qt开发

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 ?}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: