2015-06-23 4 views
0

Моя программа загружает записи (по одной строке) из файла в необработанном формате.Связь между моделями

У меня есть несколько представлений для отображения этих данных различных способов:

  • Byte Посмотреть
  • Десятичного Просмотр (делая некоторые расчеты с диапазонами байт)

Обе точки зрения должно обеспечивать возможность для редактирования значений.

Вот код:

class Record 
{ 
public: 
    void setByte (int position, Byte byte); 
    void setValue (ValueType type, Value value); 

    Byte getByte (int position) const; 
    Value getValue (ValueType type) const; 

private: 
    RawData data; 
} 

я загружаю записи в

QVector<Record> records; 

Byte Посмотреть простую таблица с шестигранными байтами (строки - номер строки, столбец - позиции байта). Decimal View также является таблицей (номер строки строки, один столбец - значение).

Итак, что является лучшим способом проектирования моделей для моих представлений с возможностью общения друг с другом (например, отправка сигналов при изменении данных из одного из видов)?

ответ

2

Как вы используете Qt, обычно лучше подклассифицировать одну из собственных моделей Qt. Таким образом, вы получите бесплатные виджеты для просмотра и в то же время сделаете свой код более последовательным, следуя тому же стандарту, что и остальная часть набора инструментов, который вы используете. Qt's documentation имеют некоторые рекомендации, указывающие, какие методы/сигналы/слоты вы должны реализовать.

Некоторые классы, чтобы посмотреть на: QAbstractItemModel, QAbstractTableModel и QAbstractListModel

Для сбоку, следует предпочесть использовать виджеты, предоставляемые Qt, и в случае необходимости, осуществить delegate изменить его внешний вид.

В вашем конкретном случае я бы подкласса QAbstractTableModel и обернул ваши записи внутри этого класса.

+0

Спасибо за ваш ответ, но мне нужно более общее решение, такое как эскиз UML (я имею в виду диаграмму классов) или smth, как это. – SandyEmerald

+0

@SandyEmerald Пожалуйста, обновите свой вопрос, чтобы отразить то, что вы действительно намереваетесь. Ваша предлагаемая запись еще менее общая, чем модели Qt. Вы можете легко представить дерево таблиц записей в Qt-модели. Пока я не понимаю, почему вам нужно «более общее» решение. Является ли ваша структура данных не представимой деревом? –

+0

@ KubaOber Идея вопроса заключается в том, как создать мою модель (ы) для связи друг с другом, когда я редактирую какую-либо ценность в любом из моих представлений? Я имею в виду, что у меня есть один источник данных (вектор моих записей) и различные способы изменения данных (путем редактирования шестнадцатеричных или десятичных значений). Итак, какова должна быть моя модель (ы)? – SandyEmerald

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