Qt信号/插槽中的'expression cannot be used as a function'

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

本文关键字:used be as function cannot expression Qt 信号 插槽      更新时间:2023-10-16

这是我在这里的第一个条目,我希望,我会提出一个格式良好、有用的问题。

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

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

这是一个本身封闭的qwidget,我只是释放我的行:

http://pastebin.com/TXXY1cT4

所以问题出在设置小部件.cpp(粘贴上的向下):

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

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

提前感谢您的任何帮助!

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

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

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

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

QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );
相关文章: