Ошибка именования слотов Qt 5.9

Я использую Qt 5.9.

У меня проблема с объявлением слотов со стилем подчеркивания, особенно когда я называю его более чем двумя подчеркиваниями. Например, с void on_stop_treatment() слот, даже если я не устанавливаю соединение, я получаю QMetaObject::connectSlotsByName: No matching signal for on_stop_treatment(),

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

0

Решение

Объявление вашего слота с именем on_stop_treatment будет конфликтовать с функцией Qt под названием Сигнал / Слот Автоматическое Соединение

Qt определит этот специфический синтаксис для вашего слота и попытается найти соответствие stop с именем QObject stop а также treatment с сигналом того имени, объявленного в классе объекта QObject.

Для достижения этого Qt использует внутренне QMetaObject::connectSlotsByName(this); выполнять автоматическое соединение сигналов / слотов.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]