Название: как определить был ли подключен сигнал к слоту Отправлено: Evgeniya от Август 06, 2009, 15:07 доброго времени суток!!!
мне нужно определить был ли подключен сигнал к слоту или нет...Просто мне нужно, чтобы в определенном месте программы сигнал не испускался, но он к этому времени может быть и не подключен еще...А прменение disconnect к неподключенному сигналу наверное не желательно Название: Re: как определить был ли подключен сигнал к слоту Отправлено: MoPDoBoPoT от Август 06, 2009, 16:31 Как определить был ли подключен сигнал к слоту мне не известно, но, по-моему, нет ничего страшного в применении disconnect к неподключеному сигнал-слотовому соединению. Метод disconnect просто вернет false.
Название: Re: как определить был ли подключен сигнал к слоту Отправлено: max1983 от Август 07, 2009, 01:30 Как определить был ли подключен сигнал к слоту мне не известно, но, по-моему, нет ничего страшного в применении disconnect к неподключеному сигнал-слотовому соединению. Метод disconnect просто вернет false. суть проверки в том и заключается что не знаешь подключён или нет, а проверить надо не отключая, вдруг соединены разные потоки. И становится страшно... а при "проверке" отключая и потом опять подключая могут быть сбои. :'( Название: Re: как определить был ли подключен сигнал к слоту Отправлено: pastor от Август 07, 2009, 09:27 Можно на время выполнения какой-либо операции просто блокировать сигналы. См. QObject::blockSignals
Название: Re: как определить был ли подключен сигнал к слоту Отправлено: SASA от Август 07, 2009, 19:02 Цитировать мне нужно определить был ли подключен сигнал к слоту или нет... Код: void QObject::connectNotify ( const char * signal ) Цитировать Просто мне нужно, чтобы в определенном месте программы сигнал не испускался, но он к этому времени может быть и не подключен еще...А прменение disconnect к неподключенному сигналу наверное не желательно Смотри ответ pastor'аНазвание: Re: как определить был ли подключен сигнал к слоту Отправлено: pastor от Август 08, 2009, 11:04 А вот с етого момента по подробней.. Как ето поможет в определении соединены ли слот с сигналом? А где я сказал что это поможет в определении соединения сигнал-слот? о_О Вот на что я ответил: Просто мне нужно, чтобы в определенном месте программы сигнал не испускался В по поводу проверки: Нельзя. Таких методов как isConnected(...), isDisconnected(...) в Qt нет. Название: Re: как определить был ли подключен сигнал к слоту Отправлено: Rcus от Август 08, 2009, 12:13 /** закрыл глаза */ Действительно нет...
/** открыл ассистант */ Цитировать int QObject::receivers ( const char * signal ) const [protected] Уже есть :)... Warning: This function violates the object-oriented principle of modularity. However, it might be useful when you need to perform expensive initialization only if something is connected to a signal. Название: Re: как определить был ли подключен сигнал к слоту Отправлено: pastor от Август 08, 2009, 12:39 Да, я знаю есть такой метод. Но как он может помочь в случае, если мне нужно определить наличие коннекта между конкретным источником и конкретным приемником? + этот метод protected, что тоже не во всех случаях удобно.
Название: Re: как определить был ли подключен сигнал к слоту Отправлено: lit-uriy от Август 08, 2009, 15:32 есть такая тема на кросплатформе: Есть ли метод, чтобы узнать соединен ли сигнал со слотом?, и если соединен то сколько раз? (http://www.forum.crossplatform.ru/index.php?showtopic=1720)
И там есть упоминание такого метода: Код
Название: Re: как определить был ли подключен сигнал к слоту Отправлено: Evgeniya от Август 10, 2009, 09:31 Спасибо огромное за ответы!!!
А если все же использвать disconnect и сигнал не будет подключен к слоту, то к чему это может привести???или это все-таки ничего страшного, как написал MoPDoBoPoT??? Название: Re: как определить был ли подключен сигнал к слоту Отправлено: ритт от Август 10, 2009, 10:34 тогда я бы всё-таки подстраховался таким образом:
Код: bool wasConnected = disconnect(...); Название: Re: как определить был ли подключен сигнал к слоту Отправлено: Evgeniya от Август 10, 2009, 10:54 есть такая тема на кросплатформе: Есть ли метод, чтобы узнать соединен ли сигнал со слотом?, и если соединен то сколько раз? (http://www.forum.crossplatform.ru/index.php?showtopic=1720) И там есть упоминание такого метода: Код
А этот метод ищет именно подключенный слот??просто он у меня никогда не возвращает -1... Название: Re: как определить был ли подключен сигнал к слоту Отправлено: ритт от Август 10, 2009, 10:58 нет, данный метод возвращает индекс мета-метода в таблице мета-методов, что может быть использовано для некоторых оптимизаций, и к тебе совершенно не относится :)
а возвращает "-1" потому, что (наверняка) указываешь неверную сигнатуру... Название: Re: как определить был ли подключен сигнал к слоту Отправлено: Alex Custov от Август 10, 2009, 19:20 а возвращает "-1" потому, что (наверняка) указываешь неверную сигнатуру... он не возвращает "-1" ;) Название: Re: как определить был ли подключен сигнал к слоту Отправлено: ритт от Август 10, 2009, 20:32 лол...по-ходу, сплю :)
если даже с неверной сигнатурой не возвращает -1, то всё плохо... |