Я разрабатываю интерфейс Qt UI и имею два разных вида (QGraphicsObject
класс) для той же модели (автомобиль).Два вида, одна модель: как обновить представления при изменении модели
Когда модель автомобиля будет обновлена (в одном из двух виджетов), я хочу, чтобы оба вида были обновлены (и, конечно же, это касается модели).
Интуитивно понятный способ сделать это - обновить модель и позволить представлениям захватывать «сигнал» или что-то подобное, когда это происходит, чтобы обновить себя.
Я хочу знать, является ли это рекомендуемым поведением (в MVC), поскольку оно заставляет модель иметь некоторое двунаправленное соединение со своими представлениями (в то время как в MVC модель не должна иметь список своих представлений).
Также, что такое хороший способ реализовать это в Qt? (используйте сигналы Qt? Поднимите флаг, когда модель была изменена?)
Но как я могу «подключить» модель к виду в Qt? Я на самом деле просто считал, что моя модель является атрибутом моих представлений (пользовательский '' QGraphicsObject'')? – halflings
QAbstractItemМодели могут быть подключены к подклассам QAbstractItemView с помощью setModel(). Однако это скорее таблица/дерево/список. Если у вас меньше данных и, скорее, несколько переменных состояния, которые вы хотите контролировать (вместо списков и т. Д.), Модель QObject модели, содержащая состояние и отправляющая сигналы об изменениях, может быть лучше подходит. Нет никакой картины, чтобы поймать все варианты использования, это скорее зависит от вашей модели. –