![]() |
|
![]() ![]() ![]() |
|
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Привет!
Возник вопрос, всегда делал сигналы, возвращающие void, а можно ли создавать сигналы, которые возвр. значение?
Спасибо! Это сообщение отредактировал(а) sergey_85 - 4.2.2010, 14:18 -------------------- A good design always pays off. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
нельзя. где-то в документации по сигнал-слотовой модели это описано.
для этого есть boost.signals -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
ок
Добавлено через 6 минут и 47 секунд хорошо, а если возвратить из параметра ф-ции ссылку, думаете пройдет?
-------------------- A good design always pays off. |
|||
|
||||
KADABRA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.8.2007 Репутация: 2 Всего: 3 |
||||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Не должно пройти. Чтобы прошло тип еще надо зарегистрировать. А такое вообще бессмысленно:
Если сигнал межпоточный или Qt::QueuedConnection, то сразу после emit в isOK результата не будет. Для подобных сигналов всего-лишь добавляется в очередь событий эвент QEvent::MetaCall. А обрабатывается он только после того как ты выйдешь из того метода где выпустил сигнал (или в qApp->processEvents() или в локальном QEventLoop). Если уж без сигналов вообще никак не можешь, то отправляй в обратную сторону сигнал с результатом, только придется реализовать очередь, т.к. не факт, что они будут приходить по порядку. Пока на лицо не правильно спроектированное приложение. |
|||
|
||||
KADABRA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.8.2007 Репутация: 2 Всего: 3 |
||||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
||||
|
||||
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Буду использовать Qt::BlockingQueuedConnection или уберу параметр
Добавлено через 2 минуты и 59 секунд мне и нужен обычный callback ![]() -------------------- A good design always pays off. |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
С ним надо поосторожней, если сигнал и слот будут в одном потоке, то это приведет к зависанию приложения (deadlock)
Нужен обычный межпотоковый callback или обычный? |
||||
|
|||||
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
обычный, все в главном потоке приложения.
-------------------- A good design always pays off. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Почему бы тогда не использовать обычный указатель на метод класса или функцию? |
|||
|
||||
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
ну можно, но всё-таки Qt, сигналы более удобны
![]() -------------------- A good design always pays off. |
|||
|
||||
Madonna |
|
|||
![]() Forbidden love... ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 22.1.2009 Где: Москва Репутация: 3 Всего: 4 |
Быстрее будет + ИМХО проще и нативно. Модель сигнал-слот использует макросы. ![]() --------------------
Best regards, Madonna |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
нет, boost.signals - вот где удобство! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |