«выражение нельзя использовать как функцию» в qt-signals/slot

это моя первая запись здесь, и я надеюсь, что задам правильно сформулированный и полезный вопрос.

Я занимаюсь программированием с помощью qt с момента, а также с успехом делал слоты и сигналы - также странно то, что он работал какое-то время, но больше не - понятия не имею, почему.

Я сделал несколько поисков по этой ошибке, и, похоже, чаще всего это причина переменных и функций с тем же именем (и в части ошибки он попытается использовать var как функцию). Это тоже проверяется, но так быть не должно.

Это сам по себе закрытый qwidget, и я просто выпускаю свои строки:

http://pastebin.com/TXXY1cT4

поэтому проблемы заключаются в строках в settingswidget.cpp (ниже на пасте):

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

Они кажутся правильными по сравнению с другими моими разъемами. Особой вещью является класс ledSetting в заголовке, но он используется только в этом классе, и эти разъемы не создают проблем.

Спасибо за любую помощь заранее!


person Vinzenz Hersche    schedule 21.03.2016    source источник
comment
У вас есть QPushButton*, называемый connect в вашем коде. Просто измените имя переменной.   -  person Rémi    schedule 22.03.2016


Ответы (1)


В вашем классе есть QPushButton* с именем connect, который скрывает функцию connect().

Следовательно, выражение не используется как функция, потому что это не функция!

Либо переименуйте переменную, либо, если это невозможно, вы можете явно вызвать QObject::connect(), чтобы заставить компилятор использовать версию connect() базового класса.

Кроме того, вы можете использовать (начиная с Qt5) новый синтаксис подключения Qt, который позволяет компилятору выполнять проверку типов за вас. Он использует указатели функций вместо макросов SIGNAL() и SLOT().

QObject::connect( terminalCompleter, &QPlainTextEdit::textChanged, this, &settingWidget::onNrOfLeds22 );
person Louen    schedule 21.03.2016
comment
большое-большое спасибо, так что мой вопрос вообще был бесполезен (для других). иногда это как носить очки, но все равно их искать.. - person Vinzenz Hersche; 22.03.2016
comment
я могу забыть принять, но, конечно, я хочу сказать спасибо :) также спасибо за подсказку в стиле Qt5, я воспользуюсь ею! 1/2-оффтоп: git commit -m НИЧЕГО НЕ ПРИЗЫВАТЬ СОЕДИНЯТЬ!!!! продолжить работу и исправить неприятную ошибку подключения - person Vinzenz Hersche; 22.03.2016