Object :: connect: такого сигнала нет RollsRoyceTab :: signal_aValueChange (int aValue)
??????
я имею
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;
}
и подключиться (…… this, SLOT (rrValuesHolder (int aValue, int bValue, int cValue))); или нужно написать только одно значение SLOT (rrValuesHolder (int aValue))?
Первое: сигналы и слоты в QObject :: connect () должны быть без имен переменных.
Второе: вы не можете связать сигнал с одним аргументом со слотом с тремя аргументами. СИГНАЛ не должен иметь меньше аргументов, чем СЛОТ.
Так должно быть, например:
connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));
И это просто объяснение этому. Если вы посылаете сигнал с одним аргументом (например, QString), как слот узнает, каковы другие два аргумента? Для меня это логично.
«Макрос SIGNAL () НЕ должен иметь меньше аргументов, чем подпись, передаваемая макросу SLOT ().
Все это будет работать:
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));
Это не работает:
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));
Я считаю, что вы должны позвонить как value SLOT(rrValuesHolder(int))
Ссылка: http://qt-project.org/doc/qt-4.8/signalsandslots.html
РЕДАКТИРОВАТЬ: Кровь включала одну дополнительную часть информации, которую я пренебрег, Сигналы и Слоты должны быть связаны без имен переменных!