8.View类

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();
}

效果如下:

        

时间: 2024-10-11 04:50:44

8.View类的相关文章

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

如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1 import android.view.View.OnClickListener; 2 import android.content.DialogInterface.OnClickListener; 其实,当我们用某个Listener时,不一定就要import它,直接用全名去定义就不需要import了,例如 1 mButton1.setOnClickListener(new OnClickListener() 2 { 3 4 @O

【Android应用开发技术:用户界面】自定义View类设计

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 设计良好的类总是相似的,它使用一个易用的接口来封装一个特定的功能,它能有效的使用CPU和内存,我们在设计View类时,通常会考虑以下因素: 遵循Android标准规则 提供自定义的风格属性值并能够被Android XML Layout所识别. 发出可访问的事件 能够兼容And

Android绘图机制(一) View类

对android绘图机制的理解,在Android学习中可谓至关重要,包括自定义控件也是使用非常频繁的内容.最近在项目中遇到一个比较棘手的问题,项目中好几个模块都用到ListView或者GridView的”下拉刷新,上拉加载更多“功能 .一开始在网上找了大牛写的作品,用在项目中后发现时不时会出现卡壳的现象,改进以后会有所改善,不过还是感觉有所欠缺.无奈我是个处女座菜鸟,尝试着找出这些问题的根本原因却发现无从下手,所以先补补基础.( 纯文字看着确实很费劲,所以顺便引用下其他的文章)  概述 View

View类的XML属性、相关方法及说明

XML属性 相关方法 说明 android:alpha setAlpha(float) 设置该组件的透明度 android:background setBackgroundResource(int) 设置该组件的背景颜色 android:clickable setClickable(boolean) 设置该组件是否可以激发单击事件 android:contentDescription setContentDescription(CharSequence) 设置该组件的主要描述信息 android

Android编程: View类和Intent类

====View类的基本方法====setBackgroundColor(int color)设置试图的背景色 setBackgroundDrawable(Drawable d)设置视图的背景图片    setMinimumHeight(int minHeight)设置最小高度,父类可能会重设 setMinimumWidth(int minWidth)设置最小宽度,父类可能会重设    setPadding(int left, int right, int top, int bottom)设置填

View类和surfaceView详细介绍

View类和surfaceView详细介绍: view类: view类是Android的一个超类,这个类几乎包含了所有的屏幕类型,每一个view都有一个用于绘画 的画布,这个画布可以进行任意的扩展.布局视图可以通过Android的XML来进行.在游戏开发中当然也可以自定义视图(view),让这个画布的功能更能满足我们在游戏开发是的需要,在Android中,任何一个view类只需要重写onDraw方法来实现界面显示,自定义视图可以是复杂的3D实现,也可以是简单地文本形式等. 游戏中最重要的就是与玩

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

uiview 删除某个指定view类的代码块

- (void)removeDynamictItemView:(UIView *)view { NSMutableArray *itemesToRemove = [NSMutableArray array]; for (UIView *subview in view.subviews) { if ([subview isKindOfClass:[TBCouponDynamictItemView class]]) { [itemesToRemove addObject:subview]; }els

view类的XML属性

属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickable setClickable(boolean) 设置View是否响应单击事件 android:visibility setVisibility(int) 控制View的可见性 android:focusable setFocusable(boolean) 控制View是否可以获取焦点 android:id setId(int) 为View

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

view概述 android绝大部分UI组件都放在android.view和android.widght包中,android的虽有UI组件都继承了View类. View类还有一个非常重要的子类:ViewGroup.ViewGroup继承了View,通常作为其他组件的容器使用,android对View和ViewGroup的设计采用了组合器模式: 即是ViewGroup属于View类,所以ViewGroup既可以包含view类,又可以包含ViewGroup类. 布局简介 android提供了两种方式