繁体   English   中英

qt-signals / slot中的“​​表达式不能用作函数”

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

这是我在这里的第一个条目,我希望,我会提出一个结构合理、有用的问题。

我从一开始就使用 qt 进行编程,并且还成功地完成了插槽和信号 - 同样奇怪的是,它已经工作了一段时间,但不再工作了 - 不知道为什么。

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

这是一个自闭的 qwidget,我只是发布我的台词:

http://pastebin.com/TXXY1cT4

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

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

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

提前感谢您的任何帮助!

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM