MVC с виджетом Qt, который использует подкласс QAbstractTableModel - PullRequest
1 голос
/ 03 августа 2009

Я занимаюсь рефакторингом.Я реализую модель Model-View-Controller.Представление является виджетом Qt.

Изначально виджет Qt создавал новый экземпляр подкласса QAbstractTableModel в куче.Давайте назовем его FooTableModel.

например

Widget::Widget(QWidget* parent)
    : 
    QWidget(parent)
    m_model(new FooTableModel(this))
{

Должен ли я вместо этого создать новый экземпляр FooTableModel в модели MVC?

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

В качестве альтернативы я ничего не мог бы передать конструктору FooTableModel и вручную удалить FooTableModel в моей модели MVC.*

Последний вариант - оставить создание FooTableModel в виджете.(И позволить ли виджету напрямую обрабатывать FooTableModel?)

Есть ли какие-либо предложения или предпочтения?

Я предполагаю, что на данный момент стоит согласиться с *.

1 Ответ

2 голосов
/ 03 августа 2009

Как правило, вы хотите избежать передачи вида на модель.

Если ваша модель MVC является QObject и экземпляр FooTableModel является его дочерним элементом, вам не нужно беспокоиться об очистке, поскольку Qt сделает это за вас. В идеале, если вы используете Qt, FooTableModel будет моделью THE, или какой бы ни был ее экземпляр.

Qt следует шаблону Модель / Представление, поскольку работа контроллера обрабатывается представлением. Проверьте: http://doc.trolltech.com/4.5/model-view-introduction.html для более.

Краткий ответ: ничего не передавать в FooTableModel, удалить его, когда закончите.

...