обобщение отображения многопеременной / слоистой системы
Я написал заявление с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) В этом типе проекта можно обобщить всю работу? (инструмент генератора кода? шаблоны?)