QSpinBox 和 QDoubleSpinBox 不在 valueChanged 上调用方法
QSpinBox and QDoubleSpinBox do not call method on valueChanged
我只想在 qspinbox 和 doublespinbox 的值发生变化时调用一个方法。
我不需要更改旋转框的实际值,我只希望它触发另一个方法的调用。为什么下面的代码没有错误或根本不做任何事情?连方法都不调用?
cpp
connect(uiSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
connect(uiDoubleSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
void ColorSwatchEdit::slotInputChanged()
{
qDebug() << "Im here";
}
header
public:
QSpinBox *uiSpinBox;
QDoubleSpinBox *uiDoubleSpinBox;
public slots:
void slotInputChanged();
即使您不使用携带信号的数据,您也必须在连接中建立签名:
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);
除了 eyllanesc 的 答案之外,如果可能,请考虑使用 FunctionPointer 语法,即
connect(uiSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &YourClass::slotInputChanged)
和
connect(uiDoubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &YourClass::slotInputChanged)
这样编译器可以在编译时告诉你连接是否无法解析
我只想在 qspinbox 和 doublespinbox 的值发生变化时调用一个方法。
我不需要更改旋转框的实际值,我只希望它触发另一个方法的调用。为什么下面的代码没有错误或根本不做任何事情?连方法都不调用?
cpp
connect(uiSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
connect(uiDoubleSpinBox, SIGNAL(valueChanged()), this, SLOT(slotInputChanged));
void ColorSwatchEdit::slotInputChanged()
{
qDebug() << "Im here";
}
header
public:
QSpinBox *uiSpinBox;
QDoubleSpinBox *uiDoubleSpinBox;
public slots:
void slotInputChanged();
即使您不使用携带信号的数据,您也必须在连接中建立签名:
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);
除了 eyllanesc 的 答案之外,如果可能,请考虑使用 FunctionPointer 语法,即
connect(uiSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &YourClass::slotInputChanged)
和
connect(uiDoubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &YourClass::slotInputChanged)
这样编译器可以在编译时告诉你连接是否无法解析