crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

5 страниц V   1 2 3 > »   
Тема закрытаНачать новую тему
> Есть ли метод, чтобы узнать соединен ли сигнал со слотом?, и если соединен то сколько раз?
ViGOur
  опции профиля:
сообщение 26.11.2008, 20:10
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(kwisp @ 26.11.2008, 17:58) *
всем привет.
может я собираюсь написать об очевидной штуке, но однако меня она удивила.

1. если соединить один и тот же сигнал с одним и тем же слотом несколько раз(n), и вызвать сигнал один раз, то
слот вызовется столько раз сколько соединений с этим сигналом мы сделали(n)....

2. если разъединить сигнал со слотом - то рушатся все соединения этого сигнала с этим слотом.

... известен ли кому нибудь метод узнать соединен ли сигнал со слотом и если соединен то сколько раз???
Для этого как я понимаю нужно использовать класс: QMetaObject .

Сообщение отредактировал ViGOur - 1.12.2008, 19:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.11.2008, 20:14
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


я вот поискал в QMetaObject и не нашел:(....
и больше того начал крутить функции данного класса. у меня в 4,4,3 версии QMetaObject::indexOfSlot(SLOT(myslot())) всегда возвращает -1не зависимо от того соединен слот или нет есть он или нет. короче странное что то...
я остановился на том что нет механизма узнать соединен ли слот с сигналом и сколько таковых соединений.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 26.11.2008, 20:19
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


тоесть примерно при таком вызове:
Цитата(cpp)
this->metaObject()->indexOfSlot(SLOT(myslot()));
???

нужно будет завтра самомы проверить, а то qt под рукой нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.11.2008, 20:24
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


да вызов и такой пробовал и не только такой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.12.2008, 17:54
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(kwisp @ 26.11.2008, 20:14) *
QMetaObject::indexOfSlot(SLOT(myslot())) всегда возвращает -1

Оказалось все просто, нужно вызывать так:
QMetaObject::indexOfSlot( "myslot()")
:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 1.12.2008, 18:41
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(ViGOur @ 1.12.2008, 17:54) *
Оказалось все просто, нужно вызывать так:
QMetaObject::indexOfSlot( "myslot()")
:)


прикольно получается.
жаль что это все равно не поможет мне узнать колличество соединений между сигналом и слотом.:(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.12.2008, 19:36
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(kwisp @ 1.12.2008, 18:41) *
жаль что это все равно не поможет мне узнать колличество соединений между сигналом и слотом.
У меня пока получилось только получить все методы объекта, с сигналами и слотами с помощью QMetaObject, поэтому думаю нужно капать в другую сторону, как будет время капну... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 5.12.2008, 10:16
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


из переписки с технической поддержкой:
"
...
Unfortunately we dont have any such convenience function which tells how
many times a signal is being connected with a slot.

Indeed I dont see any good use case for such function.

I can create a suggestion task for our developers if I get some generic
good use case for such functionality.


Regards,
I. Omair

--
Irfan Omair
Support Engineer
Nokia Inc, Redwood City
http://www.trolltech.com
"

думаю тему можно закрыть. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 5.12.2008, 16:36
Сообщение #9


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


а в чем собсна проблема? это как в анекдоте: бабка врачу: сынок я когда делаю вот так (нагибается), то у меня спина болит. Врач: дык не делайте так. Следующий!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.12.2008, 18:00
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 5.12.2008, 19:36) *
а в чем собсна проблема?
в этом:
Цитата(kwisp @ 26.11.2008, 20:58) *
если соединить один и тот же сигнал с одним и тем же слотом несколько раз(n), и вызвать сигнал один раз, то
слот вызовется столько раз сколько соединений с этим сигналом мы сделали
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V   1 2 3 > » 
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2021, 18:08