[英]'expression cannot be used as a function' in qt-signals / slot
这是我在这里的第一个条目,我希望,我会提出一个结构合理、有用的问题。
我从一开始就使用 qt 进行编程,并且还成功地完成了插槽和信号 - 同样奇怪的是,它已经工作了一段时间,但不再工作了 - 不知道为什么。
我已经对该错误进行了一些搜索,这似乎是最常见的变量和函数名称相同的原因(在错误部分,它将尝试将 var 作为函数)。 这也被检查,但不应该是这种情况。
这是一个自闭的 qwidget,我只是发布我的台词:
所以问题是settingwidget.cpp中的行(粘贴上的downer):
connect(terminalCompleter, SIGNAL(textChanged()), this,SLOT(onNrOfLeds22()));
connect(this->nrOfLeds, SIGNAL(valueChanged(int)), this,SLOT(onNrOfLeds22()));
与我的其他连接器相比,它们似乎是正确的。 一个特殊的东西是 header 中的类 ledSetting,但它只在这个类中使用,那些连接器没有问题。
提前感谢您的任何帮助!
您的类有一个名为connect
的QPushButton*
,它隐藏了connect()
函数。
因此表达式不被用作函数,因为它不是函数!
要么重命名变量,要么如果不可能,您可以显式调用QObject::connect()
以强制编译器使用基类版本的connect()
。
此外,您可以使用(从 Qt5 开始)Qt 的新连接语法,它让编译器为您进行类型检查。 它使用函数指针而不是SIGNAL()
和SLOT()
宏
QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.