Russian Qt Forum
Июнь 16, 2024, 20:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Какие критерии превращения метода в слот? + еще 2 вопроса  (Прочитано 16297 раз)
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #15 : Февраль 13, 2009, 13:50 »

зачем же тогда писать "emit" ?
Записан

Юра.
ритт
Гость
« Ответ #16 : Февраль 13, 2009, 14:30 »

для moc-а Улыбающийся

а по примеру - да, при синхронном коннекте в iResult через сигнал (точнее, "сквозь" сигнал) упадёт значение, возвращённое слотом.
работать будет, но лучше пользовать invokeMethod чтобы не замусоривать код непонятными/неоднозначными конструкциями...
Записан
BRE
Гость
« Ответ #17 : Февраль 13, 2009, 14:34 »

+ для наглядности.

Я сейчас даже для boost-сигналов пишу:
/*emit*/ signalName( ... );
Сразу понимаешь, что происходит.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #18 : Февраль 13, 2009, 15:16 »

зачем же тогда писать "emit" ?

Совершенно верно уже сказали - для наглядности.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #19 : Февраль 13, 2009, 15:25 »

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

Одно применение вижу, если слот возвращает значение, то можно следить, в том месте, где посылается сигнал, выполнился слот или нет.
Записан

Юра.
ритт
Гость
« Ответ #20 : Февраль 13, 2009, 15:49 »

не торопись называть его бесполезным )
к примеру, возможность получить результат в invokeMethod - весьма полезная штука (и очень жаль, что не работает для асинхронных вызовов с ожиданием. т.е. даже не пытается узнать ответ, хотя от синхронного вызова в этом плане не отличается)
мне кажется, что пример с ret = emit ... - это как бы побочный эффект...но специально этим вопросом не озадачивался.
Записан
Sergeich
Гость
« Ответ #21 : Февраль 13, 2009, 23:54 »

не торопись называть его бесполезным )
к примеру, возможность получить результат в invokeMethod - весьма полезная штука (и очень жаль, что не работает для асинхронных вызовов с ожиданием. т.е. даже не пытается узнать ответ, хотя от синхронного вызова в этом плане не отличается)
мне кажется, что пример с ret = emit ... - это как бы побочный эффект...но специально этим вопросом не озадачивался.
Оно действительно бесполезно как все недокументированные фичи и любой workaround. Пользуясь этим, всегда нужно помнить, что это работает только при синхронных вызовах, или что тролли могут в любой момент поменять поведие moc'а - и просто ничего не возвращать. НИКОГДА НЕЛЬЗЯ делать  временных решений - они как правило перерастают в постоянные, которые нужно сопровождать и поддерживать, причем другим разработчикам.
Записан
ритт
Гость
« Ответ #22 : Февраль 14, 2009, 00:45 »

тут я говорил про invokeMethod. это часть апи и ввиду бинарной совместимости возврат значений просуществует по-крайней мере до 5.0
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #23 : Февраль 14, 2009, 02:18 »

А что произойдет, если сигнал pleaseStartSomethingAndReturnStatusCode() оработают два или более слотов? Какое значение получим в результате?

Записан

Собираю информацию по крупицам
http://webhamster.ru
BRE
Гость
« Ответ #24 : Февраль 14, 2009, 12:12 »

А что произойдет, если сигнал pleaseStartSomethingAndReturnStatusCode() оработают два или более слотов? Какое значение получим в результате?


Не проверял, но думаю от последнего отработанного слота.
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #25 : Февраль 15, 2009, 01:32 »

А что произойдет, если сигнал pleaseStartSomethingAndReturnStatusCode() оработают два или более слотов? Какое значение получим в результате?
Не проверял, но думаю от последнего отработанного слота.

Учитывая, что очередность вызовов слотов неопределена, пользоваться таким методом чревато. Уж лучше вызывать слот как метод, либо подумать над структурой. Может быть, этот слот вовсе не слот, а открытый метод.
Записан

Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
« Ответ #26 : Февраль 15, 2009, 07:00 »

раза два уже сказал, пользоваться следует именно invokeMethod.
« Последнее редактирование: Февраль 15, 2009, 19:18 от Константин » Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #27 : Апрель 10, 2009, 19:02 »

раза два уже сказал, пользоваться следует именно invokeMethod.

Где можно прочитать по-русски что такое invokeMethod?
Записан

Собираю информацию по крупицам
http://webhamster.ru
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #28 : Апрель 10, 2009, 19:07 »

На кроссплатформе в переводах нету?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #29 : Апрель 10, 2009, 19:37 »

2 pastor, пока нету
Записан

Юра.
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.