当qspinbox和doublespinbox的值发生变化时,我所要做的就是调用一个方法。
我不需要修改spinbox的实际值,我只想让它触发另一个方法的调用。为什么下面的代码没有出错或做任何事情?甚至不打电话给这个方法?
cpp
connect(uiSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
connect(uiDoubleSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
void ColorSwatchEdit::slotInputChanged()
{
qDebug() << "Im here";
}报头
public:
QSpinBox *uiSpinBox;
QDoubleSpinBox *uiDoubleSpinBox;
public slots:
void slotInputChanged();发布于 2019-09-02 15:11:19
即使不使用携带信号的数据,也必须在连接中建立签名:
connect(uiSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotInputChanged));
connect(uiDoubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotInputChanged));但是,建议您使用新的连接语法,因为它会指示错误:
connect(uiSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &ColorSwatchEdit::slotInputChanged);
connect(uiDoubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &ColorSwatchEdit::slotInputChanged);发布于 2019-09-02 15:12:52
除了eyllanesc的答案之外,如果可能的话,可以考虑使用FunctionPointer语法。
connect(uiSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &YourClass::slotInputChanged)和
connect(uiDoubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &YourClass::slotInputChanged)这样,编译器就可以在编译时判断连接是否无法解析。
https://stackoverflow.com/questions/57758998
复制相似问题