代码之家  ›  专栏  ›  技术社区  ›  Steven Keith

带有qabstractTableModel子类的qt小部件的MVC

  •  1
  • Steven Keith  · 技术社区  · 17 年前

    我正在进行重构。我正在实现模型-视图-控制器模式。该视图是一个qt小部件。

    最初,qt小部件在堆上创建了qAbstractTableModel子类的新实例。我们称之为footablemodel。

    例如

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

    我应该在MVC模型中创建footableModel的新实例吗?

    通过这样做,我可以创建对视图的依赖(假设我仍然将小部件的指针传递给footableModel构造函数)

    或者,我也可以不向footableModel构造函数传递任何内容,并手动删除我的MVC模型中的footableModel。*

    最后一个选项是将footableModel的创建留在小部件中。(让小部件直接处理footable模型?)

    有什么建议或偏好吗?

    我想现在就跟*走吧。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Adam W    17 年前

    通常,您希望避免将视图传递给模型。

    如果您的MVC模型是一个QObject,而footableModel实例是它的子对象,那么您不需要担心清理,因为Qt将为您做这件事。理想情况下,如果您使用的是qt,那么footable模型就是模型,或者是它的任何实例。

    Qt遵循模型/视图模式,因为控制器工作由视图处理。退房: http://doc.trolltech.com/4.5/model-view-introduction.html 更多。

    简短回答:不向footablemodel传递任何内容,完成后将其删除。