Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
kuler |
16.1.2009, 17:34
Сообщение
#1
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1
|
на время, то есть к примеру есть 20 слотов на сигналы и временно нужно реакцию объекта на них отрубить, чтобы не писать 20 раз длинную строчку дисконнект, а потом также подрубать. Может ответ банален, но мне на ум не приходит.
|
|
|
|
|
kwisp |
16.1.2009, 17:44
Сообщение
#2
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(kuler @ 16.1.2009, 17:34) Link на время, то есть к примеру есть 20 слотов на сигналы и временно нужно реакцию объекта на них отрубить, чтобы не писать 20 раз длинную строчку дисконнект, а потом также подрубать. Может ответ банален, но мне на ум не приходит. есть такая штука Цитата bool QObject::blockSignals ( bool block ) If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). If block is false, no such blocking will occur. The return value is the previous value of signalsBlocked(). Note that the destroyed() signal will be emitted even if the signals for this object have been blocked. See also signalsBlocked(). есть такая Цитата bool QObject::disconnect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method ) [static] Disconnects signal in object sender from method in object receiver. Returns true if the connection is successfully broken; otherwise returns false. A signal-slot connection is removed when either of the objects involved are destroyed. disconnect() is typically used in three ways, as the following examples demonstrate. Disconnect everything connected to an object's signals: disconnect(myObject, 0, 0, 0); equivalent to the non-static overloaded function myObject->disconnect(); Disconnect everything connected to a specific signal: disconnect(myObject, SIGNAL(mySignal()), 0, 0); equivalent to the non-static overloaded function myObject->disconnect(SIGNAL(mySignal())); Disconnect a specific receiver: disconnect(myObject, 0, myReceiver, 0); equivalent to the non-static overloaded function myObject->disconnect(myReceiver); 0 may be used as a wildcard, meaning "any signal", "any receiving object", or "any slot in the receiving object", respectively. The sender may never be 0. (You cannot disconnect signals from more than one object in a single call.) If signal is 0, it disconnects receiver and method from any signal. If not, only the specified signal is disconnected. If receiver is 0, it disconnects anything connected to signal. If not, slots in objects other than receiver are not disconnected. If method is 0, it disconnects anything that is connected to receiver. If not, only slots named method will be disconnected, and all other slots are left alone. The method must be 0 if receiver is left out, so you cannot disconnect a specifically-named slot on all objects. Note: This function is thread-safe. See also connect(). тебе подойдет myObject->disconnect(myReceiver); Сообщение отредактировал kwisp - 16.1.2009, 17:46 |
|
|
|
|
Litkevich Yuriy |
16.1.2009, 17:46
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
я думаю если и поможет то видимо класс Link
|
|
|
|
|
spirit |
16.1.2009, 17:56
Сообщение
#4
|
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: 1
|
Цитата bool QObject::blockSignal(bool) это самое оно
|
|
|
|
|
Litkevich Yuriy |
16.1.2009, 18:01
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(spirit @ 16.1.2009, 20:56) Link это самое оно и все равно прийдется писать много раз, я сомневаюсь, что человек на 20 слотов одного объекта прицепил один сигнал.
|
|
|
|
|
kwisp |
16.1.2009, 18:04
Сообщение
#6
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(Litkevich Yuriy @ 16.1.2009, 18:01) Link Цитата(spirit @ 16.1.2009, 20:56) Link это самое оно и все равно прийдется писать много раз, я сомневаюсь, что человек на 20 слотов одного объекта прицепил один сигнал.не согласен. я же кинул доку выше там все написано. |
|
|
|
|
Litkevich Yuriy |
16.1.2009, 18:12
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(kwisp @ 16.1.2009, 21:04) Link я же кинул доку выше там все написано. вот еслиб ты ее перевел, другое б дело Цитата(kwisp @ 16.1.2009, 20:44) Link myObject->disconnect(myReceiver); тут мы залпом все отключили, а подключить так не выйдет. Тогда нужно соединение сигналов организовать в отдельной функции, тогда ее можно использовать и при конструировании объекта и при временной блокировке.
|
|
|
|
|
kwisp |
16.1.2009, 18:16
Сообщение
#8
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
переводами занимаетесь вы насколько я осведомлен
я же написал что подойдет из всего именно myObject->disconnect(myReceiver); а организовывать соединения в отдеьной функции неплохо, если указатели на соединяемые объекты не меняются. |
|
|
|
|
kwisp |
16.1.2009, 21:11
Сообщение
#9
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
вариант плачевный если 20 объектов высылают сигналы к объекту с 20 слотами.
тогда 20 раз писать блоксигнал не вариант. а если объектов всего 2,3 то вариант неплохой. используя разъединения а не блок сигнал правда возникает вопрос как соединиить обратно.??? можно написать соединяющую функцию. а вообще если приведешь конкретный код можно подумать как разрулить ситуацию. может не только сигналы и слоты для этого использовать.... |
|
|
|
|
Litkevich Yuriy |
17.1.2009, 5:03
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
kuler, еще вариант использовать один слот и Link
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.3.2026, 15:45 |