Qt переменное число сигналов
alexsl |
|
|
|
|
|
|
|
Пункты: 4270 |
Регистрация: 26.10.2010 |
|
|
|
Добрый день.
Подскажите как правильно решить следующую задачу.
Имеем класс получающий данные от последовательного порта. Необходимо фильтровать данные согласно правилам фильтрации и посылать другим объектам(приемникам) средствами сигналов и слотов. Идея заключается в следующем: пришедший пакет сравнивается с паттерном из списка правил при нахождении соответствея вызывается соответствующий сигнал из набора(массива или списка)сигналов.
Сложность состоит в том что число правил(и соответственно объектов получателей) со временем меняется. В результате необходимо иметь меняющийся список правил и список сигналов. Со списком правил все понятно. Подскажите как организовать меняющийся список сигналов? Или может есть другой способ? |
|
|
|
|
|
Hoksmur |
|
|
|
|
|
|
|
Пункты: 2203 |
Регистрация: 20.05.2013 |
|
|
|
Так в Qt вроде можно динамически подключать сигналы к слотам. Воспользуйтесь. У вас какие-то граничные условия есть? |
|
|
|
|
|
alexsl |
|
|
|
|
|
|
|
Пункты: 4270 |
Регистрация: 26.10.2010 |
|
|
|
Вопрос не в том как подключить. Вопрос к чему подключать? При возникновении нового объекта получателя должен возникнуть новый сигнал(и правило по которому будет приниматся решение об отправке этого нового сигнала) к которому нужно подключить слот нового объекти приемника.
На С это делается просто: в объекте источнике запоминается правило и указатель на функцию callback нового объекта приемника.
В Qt не представляю как это сделать. |
|
|
|
|
|
Hoksmur |
|
|
|
|
|
|
|
Пункты: 2203 |
Регистрация: 20.05.2013 |
|
|
|
Так, а ведь каждый Qt объект указывает на своего родителя. Что мешает сделать ещё поле, указывающее на другой, нужный вам объект или их список? Но пожалуй, такие вопросы лучше на профильных форумах задавать, imho. |
|
|
|
|
|
alexsl |
|
|
|
|
|
|
|
Пункты: 4270 |
Регистрация: 26.10.2010 |
|
|
|
|
|
|
|
|