[英]'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.