'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,我刚刚发布了我的台词:
所以问题是 settingwidget.cpp 中的行(粘贴上的下降):
connect(terminalCompleter, SIGNAL(textChanged()), this,SLOT(onNrOfLeds22()));
connect(this->nrOfLeds, SIGNAL(valueChanged(int)), this,SLOT(onNrOfLeds22()));
与我的其他连接器相比,它们似乎是正确的。 header 中的 class ledSetting 很特别,但它只用在这个 class 中,那些连接器没有问题。
提前感谢您的帮助!
您的 class 有一个名为 connect
的 QPushButton*
,它隐藏了 connect()
函数。
因此表达式未被用作函数,因为它不是函数!
重命名变量,或者如果不可能,您可以显式调用 QObject::connect()
以强制编译器使用 connect()
.[=18= 的基本 class 版本]
此外,您可以使用(从 Qt5 开始)Qt 的新连接语法,它让编译器为您进行类型检查。它使用函数指针代替 SIGNAL()
和 SLOT()
宏
QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );
这是我的第一个条目,我希望我会提出一个 well-formed 有用的问题。
我用 qt 编程了一段时间,也成功地完成了插槽和信号 - 同样奇怪的是,它已经工作了一段时间,但现在不行了 - 不知道为什么。
我对该错误进行了一些搜索,它似乎是 most-often 变量和函数同名的原因(并且在 error-part 上它将尝试将 var 作为函数) .这也被检查过,但不应该是这种情况。
这是一个 in-itself-closed qwidget,我刚刚发布了我的台词:
所以问题是 settingwidget.cpp 中的行(粘贴上的下降):
connect(terminalCompleter, SIGNAL(textChanged()), this,SLOT(onNrOfLeds22()));
connect(this->nrOfLeds, SIGNAL(valueChanged(int)), this,SLOT(onNrOfLeds22()));
与我的其他连接器相比,它们似乎是正确的。 header 中的 class ledSetting 很特别,但它只用在这个 class 中,那些连接器没有问题。
提前感谢您的帮助!
您的 class 有一个名为 connect
的 QPushButton*
,它隐藏了 connect()
函数。
因此表达式未被用作函数,因为它不是函数!
重命名变量,或者如果不可能,您可以显式调用 QObject::connect()
以强制编译器使用 connect()
.[=18= 的基本 class 版本]
此外,您可以使用(从 Qt5 开始)Qt 的新连接语法,它让编译器为您进行类型检查。它使用函数指针代替 SIGNAL()
和 SLOT()
宏
QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );