不同界面之间通过信号槽传递信号
如图,绿色窗口是顶层窗口w3,蓝色窗口是w2,红色窗口是w1
顶层窗口向底层窗口传递信号
如果现在想把参数从w3传入w1该如何做呢?
很简单,用信号槽去传递参数,那么具体该如何写呢
w3中
connect(b1,&QPushButton::clicked,[=](){ emit sig_sendnum(10); });
w2中
connect(w3,&MainWindow3::sig_sendnum,this,&MainWindow2::sig_sendnum);
w1中
connect(w2,&MainWindow2::sig_sendnum,[=](int num){ qDebug()<<num<<'\n'; });
结果如图
底层窗口向顶层窗口传递信号
如果我想从底层窗口传递到顶层呢?
如果现在想把参数从w1传入w3该如何做呢?
w1中
connect(ui->btn1,&QPushButton::clicked,[=](){ emit w2->sig_numsend(20); });
w2中
connect(this,&MainWindow2::sig_numsend,w3,&MainWindow3::sig_numsend);
w3中
connect(this,&MainWindow3::sig_numsend,[=](int num){ qDebug()<<num<<'\n'; });
结果
其他信号槽的小知识
1.槽函数也可以填信号,用来快速传递参数
connect(w3,&MainWindow3::sig_sendnum,this,&MainWindow2::sig_sendnum);
2.如果槽函数有重载,可以使用qt4的写法
connect( 信号,SIGNAL(),槽,SLOT() );
3.可以自己接受自己发出的信号,底层向上层传递,就是靠这个特性