LINUX.ORG.RU

Послать сигнал нескольким классам сразу.


0

1

Есть некая программа. Нужно сделать реакцию этой программы на некое событие. Событие глобальное, которое должно коренным образом переключить режим работы программы. Не могу придумать как это сделать. Через сигналы, слишком муторно, в каждый класс добавлять. Есть что-то через QApplicaltion, в общем типа сигнала, но глобальное?

Если каждый класс должен событие обрабатывать, то все равно в каждый класс добавлять придется. Так что сигналы - нормальный вариант по-моему.

ratatosk ()

Вариант с сигналами выглядит надёжнее всего. Но можно написать и своё событие: если его никто не перехватит, то его получат все QObject'ы и при этом им совсем не обязательно иметь обработчик такого события (если конечно им не нужно на него реагировать), то есть придётся модифицировать не все классы, а только те которым событие интересно.

KblCb ★★★★★ ()
Ответ на: комментарий от ratatosk

Коннект... коннект ... коннект... Муторно. Сделать свой евент, и конструкторе, там где нужно к нему коннект прилепить мне кажется логичнее.

Artem-Dnepr ()
Ответ на: комментарий от anonymous

У меня QT. Куча закладок, окон итд. Мне нужно чтобы по событию, некоторые элементы меню (во всех окнах) стали из активных, не активными, некоторые исчезли, поменял названия итд. В каждый класс, тащить signal, муторно. Не могу понять, может можно сделать статический сигнал?

Artem-Dnepr ()
Ответ на: комментарий от Artem-Dnepr

меняй логику приложения, чтобы не было кучи елементов, которые исчезают, дизаблятся, активируются - может даже удобнее выйдет )

x905 ★★★★★ ()

Если есть у приложения gui, то повесь shortcat. Реализуется через QAction.

stolz ()
Ответ на: комментарий от Artem-Dnepr

Сделать статический потоко-безопасный список слабых ссылок, при создании нужных элементов — добавлять в список, при событии — пройтись по нему и послать всем сигнал.

note173 ★★★★★ ()
Ответ на: комментарий от Artem-Dnepr

У меня QT. Куча закладок, окон итд. Мне нужно чтобы по событию, некоторые элементы меню (во всех окнах) стали из активных, не активными, некоторые исчезли, поменял названия итд. В каждый класс, тащить signal, муторно. Не могу понять, может можно сделать статический сигнал?

Зачем тащить? создай базовый класс с сигналом и наследуйся

najar ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.