Qt信号和槽的理解:
信号和槽机制是Qt的核心特征。
信号和槽的特点:
1、一个信号可以关联一个槽,或者多个槽。多个信号也可以关联一个槽。
如果存在多个槽与某个信号相关联,那么当这个信号被发射时,槽的执行顺序与关联顺序相同。
2、一个类的信号可以关联到其他类的槽。
使用方法:
对于信号和槽,需要使用SIGNAL和SLOT这两个宏
connect(this,SIGNAL(emitsig()),&test,SLOT(slot_msg()));
解释:
this 表示谁发射信号。
emitsig() 表示要发射的信号
&test 表示谁接收这个信号,这里的test是其他类的对象。如果是this表示是本部件接收
slot_msg() 表示要执行的槽函数
用白话说就是,我(发射信号的对象、this),我叫他吃饭去(发射一个信号、emitsig()),然后对面的伙伴(其他对象、test)
他听到了我说的话(即接收到信号),说了一声好的(槽函数处理事件、slot_msg())。
除了connect(this,SIGNAL(emitsig()),&test,SLOT(slot_msg()))的写法,还有以下的一些常用写法:
QObject::connect(view,&AutoView::sigConnect,m_model,&UpModel::slotConnect); //不同对象通信
connect(ui->connectBtn,&QPushButton::clicked,[&](){
ui->cancelBtn->setEnabled(false);
emit sigConnect();
});