connect - сделать вызов одноразовым, сигналы и слоты |
Здравствуйте, гость ( Вход | Регистрация )
connect - сделать вызов одноразовым, сигналы и слоты |
AD |
8.10.2009, 9:45
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Вот есть такой connect. Как сделать так, чтобы этот вызов делался один раз? Ну то-есть необходимо определить, что уже соединение слота и сигнала совершено и вторично делать не следует! Но конечно же, чтобы была возможность, после отсоединения (disconnect) подсоединить еще раз! |
|
|
BRE |
8.10.2009, 10:01
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Вот есть такой connect. Как сделать так, чтобы этот вызов делался один раз? Ну то-есть необходимо определить, что уже соединение слота и сигнала совершено и вторично делать не следует! Но конечно же, чтобы была возможность, после отсоединения (disconnect) подсоединить еще раз! В примитиве можно connect/disconnect делать в специальных функциях, где использовать флаги.
|
|
|
kwisp |
8.10.2009, 10:39
Сообщение
#3
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
AD,
можно в слоте prevEventAction проверять кто sender и отсоединять прям там. но я бы не баловался с соединением и рассоединением. лучше соединить один раз а флагом регулировать выполнять слот или нет. |
|
|
AD |
8.10.2009, 10:43
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
В примитиве можно connect/disconnect делать в специальных функциях, где использовать флаги. А есть поэлегантнее способ? Или это единственная возможность? AD, можно в слоте prevEventAction проверять кто sender и отсоединять прям там. лучше соединить один раз а флагом регулировать выполнять слот или нет. Как именно это сделать? |
|
|
kwisp |
8.10.2009, 10:57
Сообщение
#5
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
слушай такая бредовая идея.
е если завести объект класса
и соединить triggered() с transmite() а transmite с prevEventAction то можно попробовать управлять вызовом prevEventAction с помощью blockSignals blockSignals естественно объекта Transmitter Как именно это сделать? если ты имеешь ввиду управление флагом. то не сложно. пусть в классе есть установленный изначально в флаг=0 в слоте проверяешь если 0, то выполняешь слот, если 1 то выходишь из слота, в конце слота устанавливаешь в 1. перед первым выполнением флаг будет в 0, после первого в 1. если надо чтоб следующий вызов слота сработал устанавливаешь флаг в 0. ну естественно можно еще sender использовать чтоб знать что сработало соединение а не простой вызов слота как метода. |
|
|
AD |
8.10.2009, 11:02
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
слушай такая бредовая идея. ... соединить triggered() с transmite() а transmite с prevEventAction то можно попробовать управлять вызовом prevEventAction с помощью blockSignals blockSignals естественно объекта Transmitter Не путай меня! По-моему, это "путь из Москвы в Париж через Нью-Йорк"! если ты имеешь ввиду управление флагом. то не сложно. пусть в классе есть установленный изначально в флаг=0 в слоте проверяешь если 0, то выполняешь слот, если 1 то выходишь из слота, в конце слота устанавливаешь в 1. перед первым выполнением флаг будет в 0, после первого в 1. если надо чтоб следующий вызов слота сработал устанавливаешь флаг в 0. ну естественно можно еще sender использовать чтоб знать что сработало соединение а не простой вызов слота как метода. ммм. А примерчик можно? Непонятно значение этого флага, если в конце слота значение обнуляется. Что за sender()? Заранее спасибо. Сообщение отредактировал AD - 8.10.2009, 11:05 |
|
|
kwisp |
8.10.2009, 11:10
Сообщение
#7
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Не путай меня! По-моему, это "путь из Москвы в Париж через Нью-Йорк"! отвечу словами героя "нашей раши" - не очкуй, славик, я сто раз так делал. ну если серьезно я же написал что бредовая идея. просто взять готовое и не заморачиваться. А примерчик можно? Непонятно значение этого флага, если в конце слота значение обнуляется наверное я не умею объяснять. псевдокод Раскрывающийся текст
Что за sender()? вот тут ты меня испугал. QObject::sender(); Сообщение отредактировал kwisp - 8.10.2009, 11:11 |
|
|
Текстовая версия | Сейчас: 4.12.2024, 15:05 |