ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-03-29 12:00:07  阅读:147  来源: 互联网

标签:pare 窗口 Qt CB 调用函数 信号 quint8


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

标签:pare,窗口,Qt,CB,调用函数,信号,quint8
来源: https://www.cnblogs.com/chinasoft/p/16071030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有