2013-07-21 8 views
2

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

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

enter image description here

ответ

2

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

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

+0

Спасибо за идею «почта». –