第8章:ModuleView

1,QT引入了模型/视图结构用于完成数据与界面的分离,即InterView框架;InterView框架引入了代理(delegate),通过使用代理,能够自定义数据条目的显示和编辑方式;QT模型/视图结构体分为三部分,模型(Model)、视图(View)、代理(Delegate)

2,源码:

#include "mainwindow.h"
#include <QApplication>
#include <QAbstractItemModel>
#include <QAbstractItemView>
#include <QItemSelectionModel>

#include <QDirModel>
#include <QTreeView>
#include <QListView>
#include <QTableView>
#include <QSplitter>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QDirModel   model;                                       //新建一个对象,为数据访问做准备,QDirModel的创建还可以设置过滤器,只有符合条件的文件或目录才被访问
                                                             //QDirModel类继承自QAbstracItemModel类,为访问本地文件系统提供数据模型,它提供 新建,删除,创建
                                                             //目录等一系列与文件操作相关的函数
    QTreeView   tree;                                        //三种不同的view对象
    QListView   list;
    QTableView  table;

    tree.setModel(&model);                                       //设置view对象的model为QDirModel
    list.setModel(&model);
    table.setModel(&model);

    tree.setSelectionMode(QAbstractItemView::MultiSelection);    //设置QTreeView对象的选择方式为多选
    list.setSelectionModel(tree.selectionModel());               //设置与QListView相同的对象
    table.setSelectionModel(tree.selectionModel());
                                                                 //为了实现双击QTeeView对象中的某个目录时,QList QTable显示目录下的所有文件和目录
    QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)), &list, SLOT(setRootIndex(QModelIndex)));
    QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)), &table, SLOT(setRootIndex(QModelIndex)));

    QSplitter *splitter = new QSplitter;
    splitter->addWidget(&tree);
    splitter->addWidget(&list);
    splitter->addWidget(&table);
    splitter->show();

    return a.exec();
}

3,效果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值