Я пишу приложение на основе графического интерфейса, где я читаю строку значений из последовательного порта каждые несколько секунд, и мне нужно отобразить большинство значений в графическом индикаторе какого-то типа (возможно, я думал о QprogressBar), который отображает диапазон и Значение. Некоторые из других данных, которые я анализирую из строки, - это дата и коды ошибок. Также данные являются иерархическими.
Я хотел использовать архитектуру модель / представление Qt, потому что какое-то время меня интересовали вещи MVC, но я никогда не думал о том, как реализовать это очень хорошо.
На данный момент у меня есть подкласс QAbstractItemModel, и в модели я читаю последовательный порт и оборачиваю элементы, проанализированные из строки, в структуру данных Tree. Я могу просматривать все данные в QtreeView без проблем.
Я также начал создавать подкласс QAbstractItemView для создания своего собственного представления со всеми графическими индикаторами и тому подобным. Вот где я застреваю. Мне кажется, что для разработки представления, которое знает, как отображать мою пользовательскую модель, представление должно точно знать, как организованы все данные в модели. Разве это не противоречит цели Model / View? QTreeView, с которым я тестировал модель, в основном просто отображает модель в том виде, как она настроена в древовидной структуре, но я не хочу этого делать, потому что данные не всех одного типа. Является ли тип данных или то, как вы хотели бы представить их пользователю, определяющим фактором того, стоит ли использовать эту архитектуру или нет? Я всегда предполагал, что всегда лучше проектировать в стиле MVC.
Мне кажется, что было бы лучше просто создать подкласс QWidget, а затем прочитать его с последовательного порта и обновить все подвиджеты (графические индикаторы, метки и т. Д.) Из подкласса. По сути, делайте все в одном классе.
Кто-нибудь понимает эту проблему, которая может объяснить мне, что мне не хватает или почему я не должен делать это таким образом. На данный момент я немного смущен.
Большое спасибо за любую помощь!