信号槽使用很简单
connect(sender,signal,receiver,slot);
这样可以将两个类的调用关系简单化,举个例子
Parameter类
signals:
void valueUpdate(); 这是一个信号函数,只有函数名,不需要函数体,QT会自动给你创建,我们看看是什么样子的
// SIGNAL 0
void Parameter::valueUpdate()
{
QMetaObject::activate(this, &staticMetaObject, 0, 0);
}
ParameterWidget类
void updateValue();这里需要具体的动作,如更新控件的显示等
连接QObject::connect(¶m, &Parameter::valueUpdate, this, &ParameterWidget::updateValue);
这里Parameter类中的数值更新时,ParameterWidget界面就可以自动刷新了
但是有一种情况要注意,如果widget中使用QT Designer来设计UI,要注意UI的使用方式是继承还是组合,这个会影响到连接的写法
如:
QObject::connect(ui.pushButton,&QPushButton::clicked,this,&Monitor::on_pushButton_clicked);
这个例子中使用的是组合的使用方法,如果是多重继承的话,写法这样:
QObject::connect(pushButton,&QPushButton::clicked,this,&Monitor::on_pushButton_clicked);