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

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