我正在做一些重构。我正在实现一个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,完成后将其删除。

07-24 09:30