QABSTRATTTABLEMODEL 서브 클래스를 사용하는 QT 위젯이있는 MVC
-
10-07-2019 - |
문제
나는 약간의 리팩토링을하고 있습니다. 모델-뷰 컨트롤러 패턴을 구현하고 있습니다. 보기는 QT 위젯입니다.
원래 QT 위젯은 힙에 QabstractTableModel 서브 클래스의 새로운 인스턴스를 만들었습니다. 풋 블리 모드라고 부릅니다.
예를 들어
Widget::Widget(QWidget* parent)
:
QWidget(parent)
m_model(new FooTableModel(this))
{
대신 MVC 모델에서 FootAbleModel의 새 인스턴스를 만들어야합니까?
그렇게함으로써보기에 의존성을 만들 수 있습니다 (여전히 위젯의 포인터를 FootableModel 생성자로 전달한다고 가정합니다).
또는 FootableModel 생성자에게 아무것도 전달하지 않고 MVC 모델에서 FootableModel을 수동으로 삭제할 수 있습니다. *
마지막 옵션은 위젯에 FootableModel의 생성을 떠나는 것입니다. (위젯이 FootableModel을 직접 처리하게합니까?)
제안이나 선호도가 있습니까?
내 추측은 현재 *와 함께가는 것입니다.
해결책
일반적으로보기를 모델에 전달하지 않기를 원합니다.
MVC 모델이 Qobject이고 FootableModel 인스턴스가 자식이라면 QT가 귀하를 위해 수행 할 수 있기 때문에 정리에 대해 걱정할 필요가 없습니다. 이상적으로, QT를 사용하는 경우 FootableModel은 모델이거나 인스턴스가있는 모든 것이 될 것입니다.
QT는 컨트롤러 작업이보기에 의해 처리되므로 모델/보기 패턴을 따릅니다. 체크 아웃 : http://doc.trolltech.com/4.5/model-view-introduction.html 이상.
짧은 답변 : FootableModel에 아무것도 전달하지 않고 완료되면 삭제하십시오.