![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
cupersuper |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Объект 1 класса отсылает сигнал объекту 2 класса, тот при получении сигнала, отвечает. Получается некий цикл. Программа завершается с ошибкой через 3580 таких итераций на Qt4.8, через 3683 на Qt4.7.
Не пойму почему крашится.
![]() |
|
|
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Поскольку оба объекта в одном потоке, вызовы слотов происxодят как вызовы обычных функций и получается бесконечная рекурсия:
Если хотите устроить такой обмен, используйте либо QTimer::singleShot(0, go/back), чтобы поток вернулся в цикл обработки событий, прежде чем вызывать метод. Либо откажитесь от такого циклического вызова. Кстати зачем он вам? Возможно вы решаете не ту проблему. |
|
|
cupersuper |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Решил проблему.
Добавил Qt::QueuedConnection и сигнал стал отправляться после отработки вызвавшей его функции. lanz, спасибо, через QTimer тоже можно. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.6.2025, 14:21 |