QT 信号与槽 最简单例子

来源:互联网 发布:星空地图软件 排行 编辑:程序博客网 时间:2024/05/24 06:45


QT  信号与槽 最简单例子

 

main.cpp 和 my_head.h源码:

 

#ifndef MY_HEAD_H#define MY_HEAD_H#include <stdio.h>#include <QObject>//EastonWooclass A : public QObject   //QObject::connect是在QObject定义的,继承一下。 <span style="color:#ff0000;">注意: 如果类A 本身就已经继承过QObject了,就不用再继承了,你可以这样查看是否已继承过:把光标移动到类A,右键,选择"Open Type Hierarchy",或直接按Ctrl+Shift+T,就可以查看到类的继承关系了。</span>
{Q_OBJECT               //信号和槽要用到的宏,要加上public:    void test()    {        send_msg();    }signals:              //信号关键字    void send_msg();  //发射信号函数,带的参数必须和槽一样。声明一下就可以了。};class B : public QObject{Q_OBJECTpublic slots:         //槽关键字    void recv_msg()  //    {        printf("hello\n");    }};//值得注意的是,凡是信号和槽的定义关键字都在头文件里定义//如Q_OBJECT,signal:,public slots:,声明如void send_msg();void recv_msg();#endif // MY_HEAD_H


 

#include "my_head.h"//EastonWooint 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 ?}

原创粉丝点击