• Qt中使用信号与槽进行类与类之间的通信(父窗口直接调用函数触发子窗口信号的情况)


    Qt中使用信号与槽进行类与类之间的通信(值传递):(父窗口调用信号和槽触发子窗口信号的情况,见本文)

    1、A类中会发射信号(子部件)
    class CA{undefined

    signals:

    void ASignal(quint8 pare_1,quint8 pare_2); //信号只有声明,没有定义,只是简单的传递函数

    public:

    void sendfunc();

    };

    void CA::sendfunc(){ //A中的某个函数会发射这个信号

    //do sh.

    emit ASignal(100,200); //发射信号

    }

    2、B类中接收信号(父窗口)
    class CB{undefined

    CA m_send; //CA类对象 //父窗口中会定义一个子部件类对象,就如同窗口中会new QPushbutton;

    slots:

    reponsefunc(quint8 pare_1,quint8 pare_2); //槽函数

    };

    class CB::CB(){undefined

    //do sth.

    //将对子窗口的操作发出信号,在父窗口中响应。 //将信号与槽函数进行关联

    connect(&m_send,SIGNAL(ASignal(quint8 ,quint8)),this,SLOT(respnsefunc(qint8,qint8)));//将类A中的信号与类B中响应关联

    //触发子窗口信号

    m_send.sendfunc();

    }

    class CB::reponsefunc(quint8 pare_1,quint8 pare_2){undefined

    //do sth.

    }

    总结:

    1)Qt中的信号与linux中的信号有点像,linux中的信号简单,不能携带大量信息,Qt中的信号也是,只是参数传递,连函数定义都没有。

    2)信号的声明是在子窗口类中定义的,因为这个信号属于子窗口类;

    3)信号的触发也是在子窗口类中的,需要用一个函数来包含住这触发信号;

    4)如同窗口中定义QPushbutton按钮 及使用clicked()信号一样,子窗口类需要在父窗口类中先定义一个对象。
    ————————————————
    版权声明:本文为CSDN博主「modi000」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/modi000/article/details/106042877

  • 相关阅读:
    和程序员有关的对联
    《kali linux 渗透测试初级教程》免费下载
    PPT嵌入字体的方法
    修改nw.js的exe文件使其请求管理员权限
    nw.js FrameLess Window下的窗口拖拽与窗口大小控制
    nw.js如何处理拖放操作
    nw.js 软件推荐:AxeSlide斧子演示:PPT的另一种可能(转)
    c#使用word、excel、pdf ——转
    ASP.NET MVC
    http 报文
  • 原文地址:https://www.cnblogs.com/chinasoft/p/16071030.html
Copyright © 2020-2023  润新知