第五十五课、模型视图设计模式(上)------------------狄泰软件学院

一、模型视图设计模式

1、模型视图设计模式的核心思想

(1)、模型(数据)视图(显示)相分离

(2)、模型对外提供标准接口存取数据不关心数据如何显示

(3)、视图自定义数据的显示模式不关心数据如何组织存储

2、模型视图模式的直观理解

3、模型视图的工作机制

(1)、当数据发生改变时:模型发出信号通知视图

(2)、当用户与视图进行交互时:视图发出信号提供交互信息

4、Qt中的模型类层次结构

5、Qt中的视图类层次结构

6、模型为数据提供统一的访问方式

(1)、Qt中,不管模型以什么结构组织数据,都必须为每一个数据提供独一无二的索引

(2)、视图通过索引访问模型中的具体数据

 7、模型视图编程示例

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QFileSystemModel>
#include <QTreeView>

#include <QtGui/QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT
    QFileSystemModel m_fileModel;
    QTreeView m_treeView;
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H
MainWindow.h
#include "MainWindow.h"
#include <QDir>

//1.定义视图、模型对象
//2.设置视图对象相关属性(大小位置等)
//3.设置模型取数据的位置(文件系统如此大,要给模型指定一个地方来取数据)
//4.连接模型与视图
//5.视图通过模型提供的索引去取数据来从根部开始显示
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    m_treeView.setParent(this);
    m_treeView.resize(600,300);
    m_treeView.move(10,10);

    m_fileModel.setRootPath(QDir::currentPath());

    m_treeView.setModel(&m_fileModel);

    m_treeView.setRootIndex(m_fileModel.index(QDir::currentPath()));

}

MainWindow::~MainWindow()
{
    
}
MainWindow.cpp
#include <QtGui/QApplication>
#include "MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec();
}
main.cpp

二、小结

(1)、Qt中内置的支持模型视图的开发方式

(2)、模型用于组织数据源不关心数据的显示方式

(3)、视图用于定义数据的显示方式不关心数据的组织方式

(4)、Qt中的模型必须为每一个数据提供独一无二的索引

(5)、Qt中的视图通过索引访问模型中的数据

posted @ 2017-03-09 20:42  lgc202  阅读(564)  评论(0编辑  收藏  举报