обобщение отображения многопеременной / слоистой системы

Я написал заявление сC++ / QT который связывается с устройством для чтения / записи его переменных, помещает / получает их в структуре и представляет их в графическом интерфейсе как для просмотра, так и для редактирования.

1) Устройство поставляется с примером кода С, который также определяет протокол связи (очень плохо), например:

#define VALUE_1 0x12345678
#define VALUE_2 0xDEADBEEF
#define MY_DEVICE_VAR (VALUE_1 << 4) & (VALUE_2 >> 6)
#define MY_DEVICE_VAR_1 (MY_DEVICE_VAR & (VALUE_1 << 2)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
#define MY_DEVICE_VAR_2 (MY_DEVICE_VAR & (VALUE_2 << 4)
// .. and 300 more lines like above

Так что переменнаяVAR_1 представлен с:MY_DEVICE_VAR_1.

2) У меня есть структура, которая содержит все переменные устройства:

struct MyDeviceData
{
    int var1;
    double var2;
    char var3;
    bool var4;
        .
        .
};

Это в основном хранилище для / проекции данных, считанных с устройства. Существует 4 различных типа переменных POD.

3) Наконец, мой графический интерфейс содержит элементы графического интерфейса для отображения и редактирования экземпляра MyDeviceData.

class MyGuI
{
    QLineEdit var1;
    QLineEdit var2;
    QComboBox var3;
    QCheckBox var4;
       .
       .
};

Теперь мои вопросы:

1) Я делаю картуMY_DEVICE_VAR1 - & GT;MyDeviceData::var1 - & GT;MyGUI::var1 сif а такжеswitch/case заявления, которыми я не горжусь. Что было бы лучше "программно"? способ сделать отображение?

2) Когда значение элемента GUI изменяется, я хочу отправитьonly обновил значение на карту. помимо переопределения функций-обработчиков таких событий, как & quot;textChanged, selectedIndexChanged& Quot; и т. д. Есть ли "умнее"? методы? (QSignalMapper?)

3) В этом типе проекта можно обобщить всю работу? (инструмент генератора кода? шаблоны?)

Ответы на вопрос(1)

Ваш ответ на вопрос