前言
在mylabel.h与widget.h中均有一个private型的变量isFull
想要在widget当前屏幕状态(是否全屏)改变后同步改变mylabel
思路:
C++是面向对象语言。为了类中成员变量的安全,一般使用定义接口的方式改变类中成员变量的值。
将当前的屏幕状态(是否全屏)发送给myLable,否则只能进行单方向的通信(双击需要点击两次)
因此可以
- 在widget.cpp中将当前改变后的信号发送出去
emit SignalReturnFullShow(isFull);
- 在myLabel.cpp中定义共有函数
void myLabel::setIsFull(bool ret)
{
isFull=ret;
}
- 在widget.cpp初始化函数中绑定槽
//将当前窗口的状态信号返回myLabel
connect(this,SIGNAL(SignalReturnFullShow(bool)),
this,SLOT(doProcessReturnFullShow(bool)));
注意:第一个参数发送者是当前窗口
- 实现处理槽函数
void Widget::doProcessReturnFullShow(bool ret)
{
//在子窗体中定义一个共有函数,设置子窗体中isFull的值
lbl->setIsFull(ret);
//lbl为myLabel的对象
}
此时便可实现父类向子类的函数传递