127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
|
|
1 | |
Класс для хранения данных15.01.2015, 09:45. Показов 2593. Ответов 3
Метки нет (Все метки)
Доброго времени суток.
Господа, прошу помощи в создании класса для хранения данных. Поясню ситуацию. Пишу программу, для работы с ком-портом. В самом простом варианте, это выглядит так. Приходит пакет данных, в котором указывается группа контроллеров (в числовом виде), и говорится что с контроллера под таким адресом считать значение lineEdit. Есть xml файл, где хранятся все типы контроллеров (в текстовом виде), список контроллеров для указанного типа и у каждого контроллера свой адрес. Есть виджет окна, в котором есть два QListWidget. В первом выбирается тип контроллеров (на данный момент в текстовом виде, обычный список), при клике на этот тип, из файла загружаются все контроллеры указанного типа. и так же выстраивается третья часть окна, где для каждого типа подгружаются свои вкладки. При клике по контроллеру, во вкладку общие записывается адрес. Как это выглядит визуально - прикреплю два файла. Вся правая часть ( с вкладками) создаётся в куче и всегда мы к ней имеем доступ. Достаточно запутано, но пока идей для оптимизации нет. Теперь, что мне необходимо. По идее, все lineEdit'ы должны быть доступны всегда, хоть на чтение хоть на запись, чтобы в зависимости от команды из пакеты, я смогу считать\записать данные. Не могу придумать, как связать каждый виджет с группой контроллеров, их адресами и данными. То есть, проблему вижу так: Пришел пакет, я побайтно его разбираю. Байт под номером 3 (для примера) содержит номер группы. Байт №4 команду чтение. Байт №5 - адрес контроллера. Байт №6 - считать данные какого либо lineEdit. На этом этапе, я уже должен обратиться к нужному мне виджету, и знать что считывать. Буду рад любой идее или совету. Если что-то не понятно, готов ответить на любые вопросы.
0
|
15.01.2015, 09:45 | |
Ответы с готовыми решениями:
3
Разработка формата данных для хранения информации (текста и объектов) Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад Реализовать класс для хранения данных Глобальный класс для хранения данных |
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
|
15.01.2015, 10:23 | 2 |
Сообщение было отмечено Воротислав как решение
Решение
логику и интерфейс лучше разделять.
По этому проще забацать структуру которая будет все хранить (из lineedit). И при считывании данных из порта будет искать в ней. А она уже может быть какой угодно. QHash вам должен подойти.
1
|
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
|
|
15.01.2015, 11:18 [ТС] | 3 |
RazrFalcon, Если я правильно Вас понял, что мне нужно будет написать классы, для хранения данных на каждый тип контроллеров, а для каждого конкретного контроллера создавать объект класса. И в каждом классе хранить данные всех edit'ов. Правильно? И в получается, можно сделать у класса свойство, которое возвращает адрес. То есть, после получения команды, опрашиваю все объекты нужного класса, получая их адрес, после того как нашел нужный, изменяю в нём данные, и уже в методе испускаю сигнал. чтобы виджет обновил информацию. А как можно привязать класс (типа контроллеров) с группой контроллеров из протокола? Может так же хранить свойством и группу, а в методе разбора пакета через банальный свитч?
0
|
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
|
15.01.2015, 11:31 | 4 |
Ну этим и должна заниматься программа. Как сделаете - так и будет работать. Вариантов множество.
1
|
15.01.2015, 11:31 | |
15.01.2015, 11:31 | |
Помогаю со студенческими работами здесь
4
Класс для хранения массива данных Класс для хранения паспортных данных человека Создайте класс для хранения данных о студенте Для хранения данных о ноутбуках описать класс Notebook Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |