Basic Concepts
     在Modle/View 结构中,View从Model中提取数据,并显示给用户。View显示数据的方式不一定与Model中数据排列方式相同,也可能与底层数据结构完全不同。
     通过QAbstractItemView提供标准的视图接口,QAbstractModelView提供标准的模型接口。视图通常管理从模型提取数据的总体布局,他们可以自己呈现个别数据,或者使用Delegate来处理渲染和编辑。
     除了呈现数据,View处理Item之间的导航和选择。视图还实现基本的用户界面功能,如上下文菜单和拖放。视图可以为Item提供默认编辑功能,也可以与Delegate一起提供自定义编辑功能。
     视图可以在没有Model的情况下构建,但必须提供展示的信息。View通过Selection跟踪用户选择的Item,Selection可以被每个View单独维持也可以被很多View共享。
     一些视图,例如QListView和QTableView,把Header作为Item展示出来。View和Header通常使用同一个Model,他们使用QAbastractItemModel::headerData函数从模型中获得数据,通常以标签的形式显示标题,新的标题可以从QHeaderView子类化,提供View专用的标签。
 
Using an existing view
     QT提供3种ready-to-use视图。QListView可以把Model中的Item显示为列表,或者以经典的图标视图显示。QTreeView可以把Model中Item显示为有层次结构的列表,允许深层嵌套的结构以紧凑的方式显示。QTableView以表的形式显示模型中的Item。
 
    
以上的标准视图对于大多数应用程序来说是足够了,它们提供基本的编辑功能,也可以根据更专业的用户界面需求进行定制。
 
Handling selections of items
    
 
  以上图片显示2中不用的View使用同一个Model,每个View包含多个可选择的Item。尽管2个View显示的数据一致,但是每个视图都维护自己内部的selection model。在某些情况下这是有用的,但是在另外的情况下,共享selection model是更好的选择。
     视图中的Item selection机制由QItemSelectionModel提供。所有的标准视图都有默认的selection model。可以通过selectionModel()函数获得选择模型,也可以通过setSelectionModel()函数设置选择选择模型。当一个Model提供给多个View显示时,设置selection model是一个很好的选择。
     一般来说,除非你子类化Model或者View,你不用手动来操作selection中的内容。
      
  secondTableView->setSelectionModel(firstTableView->selectionModel());
 
一个简单的QListView例子:
#include <QApplication>

#include <QStringList>
#include <QStringListModel>
#include <QListView> int main(int argc, char *argv[])
{
QApplication a(argc, argv); QStringList list;
list << "one" << "two" << "three"; QStringListModel *model = new QStringListModel(list);
QListView *view = new QListView; view->setModel(model);
view->show(); return a.exec();
}

效果如下:

        

8.View类的更多相关文章

  1. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  2. Thinkphp源码分析系列(九)–视图view类

    视图类view主要用于页面内容的输出,模板调用等,用在控制器类中,可以使得控制器类把表现和数据结合起来.下面我们来看一下执行流程. 首先,在控制器类中保持着一个view类的对象实例,只要继承自控制器父 ...

  3. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  4. PureMVC(JS版)源码解析(九):View类

    在讲解View类之前,我们先回顾一下PureMVC的模块划分:      在PureMVC中M.V.C三部分由三个单例类管理,分别是Model/View/Controller.PureMVC中另外一个 ...

  5. 《Qt编程的艺术》——8.2.1 在Designer中使用View类

    不幸的是,QDirModel有一个严重的限制:因为view不响应鼠标操作,我们不得不自己建立这些功能.除此之外,每个view中,用户都一次只能选择一个元素.如果你想要允许同时选择多个项目,你也必须自己 ...

  6. 【Android Training UI】创建自定义Views(Lesson 1 - 创建一个View类)

    发布在我的网站 http://kesenhoo.github.io/blog/2013/06/30/android-training-ui-creating-custom-views-lesson-1 ...

  7. 安卓开发28:自定义View类

    自定义View类 通过自定义View类,可以自定义复杂的,按照自己需求的控件. 一个简单的例子 mainActivity.java 这个里面就是最普通的代码,但是给自定义的控件加上了一个onclick ...

  8. view类的XML属性

    属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickable setClickable(boole ...

  9. Android游戏开发之旅 View类详解

    Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...

  10. Android的View类介绍-android的学习之旅(十三)

    view概述 android绝大部分UI组件都放在android.view和android.widght包中,android的虽有UI组件都继承了View类. View类还有一个非常重要的子类:Vie ...

随机推荐

  1. 剑指offer-7.旋转数组的最小数字

    看起来不需要用二分法查找 --------------------------------------------------------- 时间限制:3秒 空间限制:32768K 热度指数:5098 ...

  2. set/multiset和map/multimap用法小结

    二叉搜索树是ACM中经常需要用到的数据结构,熟练掌握map和set的用法很关键,现对其做一个简单的总结. 主要的功能有:插入元素,查找元素,删除,遍历/反向遍历. 插入,删除和查找操作的时间都和树的高 ...

  3. DedeCMS织梦模板标签调用大全

    本文转载:http://www.mubanzhijia.com/jishujiaocheng/1.html 关键描述调用标签: <meta name="keywords" c ...

  4. itunesconnect如何提交被决绝过了的相同版本号

    遇到一次审核被拒,打算再次提交时,不想改变版本号,可以在xcode里把build版本号后面几个.1,比如version上次被拒时是1.1.3,build也是1.1.3,这次送审时version不变,b ...

  5. BZOJ - 3123 森林 (可持久化线段树+启发式合并)

    题目链接 先把初始边建成一个森林,每棵树选一个根节点递归建可持久化线段树.当添加新边的时候,把结点数少的树暴力重构,以和它连边的那个点作为父节点继承线段树,并求出倍增数组.树的结点数可以用并查集来维护 ...

  6. UVA - 11768 Lattice Point or Not (扩展欧几里得)

    求一条线段上有多少个整点. 是道扩欧基础题,列出两点式方程,然后分四种情况讨论即可.但细节处理较多很容易写挫(某zzWA了十几发才过掉的). 由于数据精度较小,浮点数比较没有用eps,直接==比较了. ...

  7. 教你用 Python 实现抖音热门表白软件

    之前在群里看到有人发了一个抖音上很火的小视频,就是一个不正经的软件,运行后问你是不是愿意做我的朋友,但你没法点击到「不同意」!并且没办法直接关闭窗口! 很不正经,很流氓,有点适合我. 效果大概是这样的 ...

  8. python sentence

    1.while for 增加了循环正常结束后执行的else代码块. 2.Objects are mutable 3.import copy p1 = Point() p2=copy.copy(p1) ...

  9. 正值表达式匹配html标签的属性值

    今天由于工作的需求,需要获取html标签的属性值,立即想到了正则表达式,标签如下: <circle id="ap_test" cx="200" cy=&q ...

  10. 蓝桥杯 算法训练 ALGO-152 8-2求完数

     算法训练 8-2求完数   时间限制:50.0s   内存限制:256.0MB 问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. 样例 ...