Qt自定义信号和槽

来源:互联网 发布:鸭鸭网络 编辑:程序博客网 时间:2024/05/23 02:04

转载自http://blog.csdn.net/crazyman2010/article/details/6055863

//////////////A.h//////////////////////////////

#ifndefA_H

#define A_H
#include <QObject>
#include<QDebug>
class A :public QObject
{
    Q_OBJECT// 必需的
public:
    void sendselfsignal(void)// 发送自定义信号
    {
        qDebug("object a send signal s");
        emit s();
    }
signals: //自定义信号, 如果要自定义保护信号, 就在protected: 后声明.
//自定义信号只需要在这里声明, 然后将槽连接到信号即可,无需实现信号函数.信号函数与槽函数的返回值类型在任何时候都可以不同; 而且如果不关心信号传递下来的参数, 信号函数与槽函数的参数列表也可以不相同, 但是如果要访问信号传递下来的任何参数时, 信号函数与槽函数的参数列表必须相同.
    void s();// 自定义信号
};
#endif // A_H
//////////////B.h//////////////////////////////
#ifndef B_H
#define B_H
#include"A.h"
class B :public QObject//:public A
{
    Q_OBJECT// 必需的
public:
    B(A* pa)
    {
        connect(pa,SIGNAL(s()),this,SLOT(recvs()));// 关联信号和槽
    }
public slots:
    void recvs()// 自定义槽
    {
        qDebug("in object b,recved s");
    }
};
#endif // B_H
 
//////////////main.cpp//////////////////////////////
#include <QtCore/QCoreApplication>
#include"A.h"
#include"B.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    A test;
    B b(&test);
    test.sendselfsignal();
    return a.exec();
}
运行结果如下图所示
 
原创粉丝点击