信号和槽机制。
在两个不同的cpp,h文件中,实现两个窗口A、B的互动,需要借助信号和槽
首先按下A窗口按钮,clicked,调用槽函数。槽函数中为
emit mysignal
即发送一个全局信号,然后B窗口接受到这个信号,B窗口调用B类的槽函数。
具体可以看以下博客
信号和槽使编程间接明了,但是也牺牲了一部分性能,不过还是可以接受的
信号 - 槽机制完全独立于任何 GUI 事件循环
如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。
connect 函数是一个bool量,
现在推荐用SIGNAL,SLOT宏表示,不用指针(但是这是QT 4 的写法,视频又建议用qt5的)
eg:
connect(ui->btn_link, SIGNAL(clicked()), this, SLOT(linkcamera()));
信号可以重载,即可以有相同的名称但是参数不一样,注意对应的槽函数形式也要一样。
eg:
signals:
void mysignal();
void mysignal(int x);
但是重载信号会有二义性,会造成冲突,不知道是哪个信号。处理方法用c++的void (QMainWidow::*xxxx1)()=QMainWidow::mysignal();
(QMainWidow::*xxxx2)(int x)=QMainWidow::mysignal();
!实际处理直接定义两个不同名字信号就好了,这样只是学习理解!!!!