LINUX.ORG.RU

Новый синтаксис signal - slot не работает под виндой

 ,


0

2

В продолжении моей предыдущей темы (которая кстати тоже пока не закрыта)

В процессе переноса qt приложения с linux под окна выяснились некоторые проблемы: QObject::connect не может теперь найти сигналы объектов, но только в том случае, если я свой сигнал определил в классе, унаследованном от QObject или его детей, и эта проблема касается только нового синтаксиса, т.е.

connect(btn, &QPushButton::clicked, this, &MainWindow::close);
Эта ситуация работает, а вот эта:
connect(obj, &MyObject::mySignal, this, &MainWindow::close);
не работает с ошибкой

qobject connect signal not found

А если заменить этот синтаксис на старый с макросами SIGNAL и SLOT, то все работает

Где то мне кажется я видел что это баг, но что то мне не верится , что к выходу 5.3.1 релиза эту штуку не пофиксили...

Ответ на: комментарий от UVV

Проблема в том, что проект уже очень большой, и везде менять синтаксис накладно по времени, а учитывая, что мне сегодня надо уже сделать сборку под окна, это решение отпадает на самый последний план. Вот я и думаю, что, возможно кто то уже с этой проблемой столкнулся и нашел решение...

energyclab
() автор топика

У сигнала есть аргументы?

# *.pro 
CONFIG += c++11

Такое в про файле есть? И еще могут быть специфичные фигни для винды вроде console.

frozenix ★★★
()
Последнее исправление: frozenix (всего исправлений: 1)

Минимальный неработающий, но компилирующийся и запускающийся кусок кода в студию.

Вангую, что пока ты будешь его писать - сам же найдешь у себя ошибки.

g0t0
()
Ответ на: комментарий от vazgen05

Именно так, и ошибок никаких нету...Я просто везде, где сигнал не был найден в объекте, воспользовался старым синтаксисом и все заработало

energyclab
() автор топика
Ответ на: комментарий от energyclab

Ну грохни папку с билдом, бывают такие фигни.

frozenix ★★★
()
29 июня 2015 г.
Ответ на: комментарий от energyclab

Используй экспорт

Если сигнал из либы, то нужно экспортить символы явно, через Q_DECL_EXPORT

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.