Есть ли метод, чтобы узнать соединен ли сигнал со слотом?, и если соединен то сколько раз? |
Здравствуйте, гость ( Вход | Регистрация )
Есть ли метод, чтобы узнать соединен ли сигнал со слотом?, и если соединен то сколько раз? |
Litkevich Yuriy |
11.2.2009, 9:58
Сообщение
#21
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
kwisp |
11.2.2009, 9:59
Сообщение
#22
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
berserk,
примерчик подскажешь, мне уже не нужно, просто ради интерса.... |
|
|
Константин |
11.2.2009, 9:59
Сообщение
#23
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
1.
к примеру: в зависимости набора событий, на определенный хот кей программа должна реагировать по разному, короче в зависимости от обстоятельств у меня сигнал высылаемый фильтром событий клавиатуры соединяется то с одним обработчиком(слотом) то с другим то с третим, при это с остальными разъединяется. задача-пример, если угодно. 2. "не совсем верный подход" потому, что он в общем случае верный и реализуется проще, но в конкретных случаях этот подход неоптимален (частое "передёргивание" коннектов - не есть гут) |
|
|
kwisp |
11.2.2009, 10:12
Сообщение
#24
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
ну QVariant& тож слать не гут
а вот если бы не тупил в одно время с коннектами не нашел бы самого интереснного.- нет стандартного механизма счетчика соединений сигнала со слотом. Цитата частое "передёргивание" коннектов - не есть гут 100% так но кто сказал что оно частое? + тема называется "Есть ли метод, чтобы узнать соединен ли сигнал со слотом?" а не "Как мне сделать то то и то то??? помогите есть ли у кого идеи." внимание вопрос: метод есть? уже выснили что стандартного нет. или все же есть? |
|
|
Litkevich Yuriy |
11.2.2009, 10:18
Сообщение
#25
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Мысль вслух:
1) когда мы в своей программе создаем соединения, то все эти соединения описываются в файле moc_***.cpp. 2) когда мы создаем несколько одинаковых соединений, то слот будет вызван столько раз сколько соединений - значит счетчик есть. Может стоит попытаться работать с этими moc_***.cpp файлами? |
|
|
kwisp |
11.2.2009, 10:28
Сообщение
#26
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Litkevich Yuriy,
Цитата значит счетчик есть. думаю не факт. смотрел исходники moc??? там не все гладко. да и вообще нужно ли это? если только для интересу. получается надо просто написать ИЗБЕГАЙТЕ РЕАЛИЗАЦИИ ДИНАМИЧЕСКОЙ МАШИНЫ СОСТОЯНИЙ с помощью сигналов и слотов дабы избежать проблем с много кратным соединением. используйте колбэки что угодно но не сигналы и слоты даже если соединения редко используемые. я приводил ответ троллех-тех.поддержки. "нету и не зачем" я так понял. хотя если спмостоятельно написать мини патч и отправить тролям с подробным обоснованием нафига это надо. думаю они будут рады и даже скажут спасибо. |
|
|
kuler |
11.2.2009, 10:46
Сообщение
#27
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
разве нельзя создать маленький класс в котором будет счетчик и через который будет производиться коннект, а потом наследовать от него?
|
|
|
kwisp |
11.2.2009, 10:57
Сообщение
#28
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
Константин |
11.2.2009, 11:10
Сообщение
#29
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
Мысль вслух: 1) когда мы в своей программе создаем соединения, то все эти соединения описываются в файле moc_***.cpp. 2) когда мы создаем несколько одинаковых соединений, то слот будет вызван столько раз сколько соединений - значит счетчик есть. Может стоит попытаться работать с этими moc_***.cpp файлами? 1. соединения не описываются нигде. QObject::connect соединяет сигнал со слотом (или с сигналом) рантайм - по имени/индексу сигнала/слота 2. счётчика как такового нет, есть список коннектов, в котором при желании можно было бы посчитать определённые индексы я приводил ответ троллех-тех.поддержки. "нету и не зачем" я так понял. хотя если спмостоятельно написать мини патч и отправить тролям с подробным обоснованием нафига это надо. думаю они будут рады и даже скажут спасибо. так и есть. а можем мы предварительно услышать обоснование "нафига оно надо"? почему-то мне кажается, что весомо аргументировать не получится ) |
|
|
kwisp |
11.2.2009, 11:35
Сообщение
#30
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Константин,
действительно, а смогу ли я обосновать необходимость такового счетчика??? я думаю что смогу. есть функция QObject::connect() и QObject::disconnect() следовательно предполагается возможность динамического соединение и разъединение сигналов и слотов??? не правда ли??? почему я не могу узнать сколько раз вызовется мой слот при одном вызове сигнала господа трольтеховцы (0-вообще не соединен на данный момент, 1,2,3 ... 10)??? вот и все обоснование. только конечно более литературно написать. другой вопрос насколько это необходимо вообще. если ты четко следишь за состояниями объектов, и пользуешь другие методы отключения блокировки сигналов в каких то состояниях получается ты выполняешь немного осмелюсь сказать библиотечную задачу. они взялись реализовать сигналы слоты взялись сделать как коннект так и дисконнект ну и уже бы и предоставили возможность узнать сколько соединений. вообще не хочу разводить полемику по данному поводу ,Константин, изначально был просто пост в теме "секреты и интересные возможности Qt" где я описал найденный минисекрет и отсутсвие может быть ненужной возможности. вот и все это просто интересный факт а не способ и метод решения моей задачи моя машина уже как сто лет написана без динамических соединений. а обнаружен факт случайно и в ассистенте 3 версии как минимум не описан. просто факт как есть и все. говорю же если кому интересно может рыть и писать в этой теме свои решения это странности. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 7:26 |