'表达式不能用作函数'在qt-signals / slot中

时间:2016-03-21 22:58:10

标签: c++ qt signals-slots

这是我第一次进入这里,我希望,我会提出一个结构良好,有用的问题。

我现在用qt编程,并且也成功地插槽和信号 - 同样奇怪的是,它已经工作了一会儿,但不再是 - 不知道为什么。

我已经对该错误进行了一些搜索,而且似乎最常见的原因是变量和函数具有相同的名称(并且在错误部分它会尝试将var作为函数)。这也是检查过但不应该是这种情况。

它是一个本身封闭的qwidget,我只是释放我的台词:

http://pastebin.com/TXXY1cT4

所以问题是setswidget.cpp中的行(粘贴上的downer):

connect(terminalCompleter, SIGNAL(textChanged()), this,SLOT(onNrOfLeds22()));
connect(this->nrOfLeds, SIGNAL(valueChanged(int)), this,SLOT(onNrOfLeds22()));

与其他连接器相比,它们似乎是正确的。一个特殊的东西是标题中的ledsetting类,但它只在这个类中使用,这些连接器没有问题。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的班级有一个名为QPushButton*的{​​{1}}隐藏connect功能。

因此表达式不被用作函数,因为它不是函数!

重命名变量,或者如果不可能,可以明确地调用connect()来强制编译器使用基类'版本QObject::connect()

此外,您可以使用(从Qt5开始)Qt的新连接语法,它允许编译器为您进行类型检查。它使用函数指针而不是connect()SIGNAL()

SLOT()