c++ - 没有这样的插槽/信号(Qt)

标签 c++ qt slot

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/

相关文章:

C++ 头文件和类文件 - undefined reference

c++ - 将信号和插槽关联到动态创建的 qcheckbox

c++ - 固定大小的线程安全队列

c++ - 如何将 `std::string` 传递给 `QString` `arg` 方法?

Qt 套件选择

javascript - 公牛上的槽和奶头 HTML 模板

c++ - QT 插槽和信号失败

Android NDK 应用程序无法达到任何断点

c++ - 如何在C++中将文件夹从一个路径复制到另一个路径

c++ - 为什么会出现 “vector out of range”错误?