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
标签:pare,窗口,Qt,CB,调用函数,信号,quint8 来源: https://www.cnblogs.com/chinasoft/p/16071030.html