Как излучать сигнал через несколько объектов класса в Qt?

У меня есть несколько классов: класс A — высший класс, класс B и класс C, которые инициализируются в конструкторе класса A. В конструкторе класса B инициализируется класс B1, а в конструкторе класса C инициализируется класс C1. Объект C1 и объект B1 не видят друг друга.

Каждый раз, когда мне нужно послать сигнал из класса C1 в класс B1, я соединяю C1 и C, C и B, наконец, B и B1. Таким образом, каждый раз, когда моя программа испускает сигнал в объекте класса C1, она отправляет объекту класса C, затем B и затем B1. (На картинке) Это правильный путь Qt? Или есть лучший способ сделать это?

введите описание изображения здесь

2

Решение

Вы можете добавить к классу C интерфейс, который возвращает C1, и интерфейс, аналогичный классу B, тоже. Затем, после создания классов C и B, класс A может запросить C1 и B1 и подключить сигнал C1 к слоту B1.

Или, если у вас много подобных случаев и вы определенно не хотите выставлять классы C1 и B1 на A, вы можете создать свой собственный механизм сигнализации. Это своего рода «почтовое отделение», где классы могут регистрироваться как получатели и куда классы могут отправлять сообщения. В этом случае класс B1 будет регистрироваться как получатель, а класс C1 будет отправлять сообщения. С1 и В1 ничего не знали бы друг о друге. Почтовое отделение отправит сообщение C1 на B1. Этот вид класса «почтовое отделение» также может быть реализован с использованием сигналов и слотов Qt.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]