2010-11-19 2 views
1

как вы используете MV в Qt? Я пробовал эти два подхода:Каков ваш предпочтительный шаблон для использования Qt Model-View Architecture?

  1. Если есть существующий/наследие код «данные» -обучение, я использую модель в качестве фасада. Класс модели-реализации получает ссылку на данные и вызывает функции при доступе к элементу модели .

  2. Для новых реализаций Я получаю класс данных из QAbstractModel.

Есть ли другой способ, которым вы это делаете?

+0

FWIW, это похоже на то, как я делаю вещи. 1) Если существует существующий код, который использует классы Widget, оставьте его в покое, если он не нуждается в капитальном ремонте. 2) Если существуют существующие/устаревшие классы данных кода, используйте модель в качестве фасада. 3) Если мне нужна новая реализация, сколько из них связано с данными? В случае хорошей суммы я создаю класс данных и использую модель как фасад, так что методы обычно отделены от деталей пользовательского интерфейса. 4) Else происходит из QAbstractModel. –

ответ

1

Подход, который я получил, похож на тот, который вы предлагаете. В настоящее время я использую фасад для сопоставления между моей старой моделью данных в QAbstractModel.

Сначала фасад был слишком сложным, но медленно я вынимаю функциональность из модели фасада и вставляю его в свою модель данных. И вот однажды я полностью удалю фасад, чтобы моя модель была моделью.

Наличие одной модели сделает мою голову больнее.

-1

MV-code в Qt немного беспорядочен и чувствует себя неуклюжим. Особенно, если вам нужно реализовать иерархические списки (древовидные представления).

В зависимости от ваших потребностей я обнаружил, что в некоторых случаях использование классов QListWidget, QTableWidget и QTreeWidget может быть намного менее болезненным.

+0

-1 Извините, я не прошу альтернативы, но для лучшей практики с MV в Qt. На самом деле я не нахожу их беспорядочными. В противоположность. Все виды моделей (дерево, таблица. Список) отлично работают для меня. К сожалению, эти старые классы удобства не являются опцией в нетривиальных приложениях. –

+0

В этом случае ... http://doc.qt.nokia.com/4.7/model-view-programming.html – BastiBen

Смежные вопросы