我正在做一些重构。我正在实现一个Model-View-Controller模式。该 View 是一个Qt小部件。
最初,Qt小部件在堆上创建了QAbstractTableModel子类的新实例。让我们称之为FooTableModel。
例如
Widget::Widget(QWidget* parent)
:
QWidget(parent)
m_model(new FooTableModel(this))
{
是否应该在MVC模型中创建FooTableModel的新实例?
这样,我可以在 View 上创建一个依赖项(假设我仍然将小部件的指针传递给FooTableModel构造函数)
另外,我什么也不能传递给FooTableModel构造函数,并在我的MVC模型中手动删除FooTableModel。 *
最后一个选择是将FooTableModel的创建保留在小部件中。 (让小部件直接处理FooTableModel吗?)
有什么建议或偏好吗?
我的猜测是现在与*一起使用。
最佳答案
通常,您要避免将 View 传递给模型。
如果您的MVC模型是QObject,而FooTableModel实例是它的子级,则无需担心清理,因为Qt会为您完成它。理想情况下,如果您使用Qt,则FooTableModel将是THE模型,或者具有它的实例。
Qt遵循“模型/ View ”模式,因为 Controller 工作由 View 处理。退房:http://doc.trolltech.com/4.5/model-view-introduction.html了解更多。
简短答案:不传递任何内容给FooTableModel,完成后将其删除。