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