Object::connect: No such signal RollsRoyceTab::signal_aValueChange(int aValue)
在下面的类中:
class RollsRoyceTab : public QWidget
{
Q_OBJECT
public:
RollsRoyceTab(QWidget *parent = 0);
public slots:
void aValueChange(int);
void rrValuesHolder(int aValue, int bValue, int cValue);
signals:
void signal_aValueChange(int aValue);
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)
{
...
emit signal_aValueChange(aValue);
}
void RollsRoyceTab::rrValuesHolder(int aValue, int bValue, int cValue)
{
qDebug() << aValue;
}
连接的正确写法是什么?
connect(... this,SLOT(rrValuesHolder(int aValue, int bValue, int cValue)));
或者只需要写入一个值 SLOT(rrValuesHolder(int aValue))
?
最佳答案
首先:QObject::connect() 中的信号和槽应该没有变量名。
第二:您不能将具有一个参数的信号与具有三个参数的 SLOT 连接起来。 SIGNAL 的参数不得少于 SLOT。
它应该用于例如:
connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));
这只是对此的解释。如果你用一个参数发出信号(例如 QString),slot 怎么知道其他两个参数是什么?对我来说这是合乎逻辑的。
关于c++ - 没有这样的插槽/信号(Qt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346428/