簡體   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