Object::connect: No such signal RollsRoyceTab::signal_aValueChange(int aValue) ??????
I have
class RollsRoyceTab : public QWidget
{
Q_OBJECT
public:
RollsRoyceTab(QWidget *parent = 0);
public slots:
void aValueChange(int);
void bValueChange(int);
void cValueChange(int);
void rrValuesHolder(int aValue, int bValue, int cValue);
signals:
void signal_aValueChange(int aValue);
void signal_bValueChange(int bValue);
void signal_cValueChange(int cValue);
private:
.........
int aValue, bValue, cValue;
};
............
connect(this,SIGNAL(signal_aValueChange(int aValue)),this,SLOT(rrValuesHolder(int aValue, int bValue, int cValue)));
}
void RollsRoyceTab::aValueChange(int aValue)
{
lcdAL->display(aValue);
lcdAR->display(100 - aValue);
emit signal_aValueChange(aValue);
}
void RollsRoyceTab::rrValuesHolder(int aValue, int bValue, int cValue)
{
qDebug() << aValue;
qDebug() << bValue;
qDebug() << cValue;
}
and connect(...... this,SLOT(rrValuesHolder(int aValue, int bValue, int cValue))); or need write only one value SLOT(rrValuesHolder(int aValue)) ?
First: signals and slots in QObject::connect() should be without variables names.
Second: You can't connect signal with one argument with SLOT with three arguments. SIGNAL must not have fewer arguments than the SLOT.
It should be for e.g.:
connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));
And it's simply explanation for that. If you emit signal with one argument (for e.g. QString) how would slot know what are others two arguments? For me it's logical.
"SIGNAL() macro must NOT have fewer arguments than the signature passed to the SLOT() macro.
All of these would work:
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));
This does not work:
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));
I believe you should call as value SLOT(rrValuesHolder(int))
Reference: http://qt-project.org/doc/qt-4.8/signalsandslots.html
EDIT: Blood included one additional piece of information that I neglected, Signals and Slots should be connected without variable names!
来源:https://stackoverflow.com/questions/15346428/no-such-slot-signals-qt