'expression cannot be used as a function' 在 qt-signals / 插槽

'expression cannot be used as a function' in qt-signals / slot

这是我的第一个条目,我希望我会提出一个 well-formed 有用的问题。

我用 qt 编程了一段时间,也成功地完成了插槽和信号 - 同样奇怪的是,它已经工作了一段时间,但现在不行了 - 不知道为什么。

我对该错误进行了一些搜索,它似乎是 most-often 变量和函数同名的原因(并且在 error-part 上它将尝试将 var 作为函数) .这也被检查过,但不应该是这种情况。

这是一个 in-itself-closed qwidget,我刚刚发布了我的台词:

http://pastebin.com/TXXY1cT4

所以问题是 settingwidget.cpp 中的行(粘贴上的下降):

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

与我的其他连接器相比,它们似乎是正确的。 header 中的 class ledSetting 很特别,但它只用在这个 class 中,那些连接器没有问题。

提前感谢您的帮助!

您的 class 有一个名为 connectQPushButton*,它隐藏了 connect() 函数。

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

重命名变量,或者如果不可能,您可以显式调用 QObject::connect() 以强制编译器使用 connect().[=18= 的基本 class 版本]

此外,您可以使用(从 Qt5 开始)Qt 的新连接语法,它让编译器为您进行类型检查。它使用函数指针代替 SIGNAL()SLOT()

QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );