实习刚才是一段时间,公司这边就要求熟悉这个mvc。一般开始都是用tableview,前面的blog我都是使用listview居多,并且相对delegate这个使用的多余model。接下来说下model。

tableview简单说下就是多行多列的表格,使用起来是很简单,添加数据直接insert即可【@官网手册】

但是简单的tableview往往不能满足我们的需求这时候就用到模型。model。一般有标准的model,tableviewmodel,不过大都是继承于qabstractitemmodel。

用法大同小异,

都需要给模型配置合适的数据源 :一般QStringlist,或者QMap、QHash等存储结构去保存数据源,

然后从继承的model去重写一下几个方法,来初始化view上的面数据,以及更新model的数据还有返回delegate的数据,重写&自定义方法

int rowCount();           //返回view上设置的行

int columnCount();     //返回view上设置的列

QVariant data();         //返回view上设置的data

QVariant headerData();//返回view上设置的表头[一般可以隐藏如要求高,好看一些,一般数据显示不隐藏]

bool setdata();            //返回的数据设置更新到model

void reset();                //刷新model  自定义方法

void addData();            //添加数据源  自定义方法

Qt::ItemFlags QAbstractItemModel::flags ()  //设置代理的属性,可编辑可选中等!

这样就能简单的实现view+model了。

接下来是加入delegate。即实现view中的复选框,下拉框等。

继承于QItemDelegate 一般情况下是,还有qstyleitemdelegate,前者已够用两者差不多。

重写以下几个方法去创建对应的控件,赋初值并且显示。

/*创建控件*/

   QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
/*设置控件数据*/
    void setEditorData(QWidget *editor,  const  QModelIndex &index)  const;
/*更新模型上的数据*/
    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
/*控件位置更新*/
    void updateEditorGeometry(QWidget *editor, const  QStyleOptionViewItem &option,  const  QModelIndex &index) const ;

具体源码助手上有说明,下面是效果图。

效果如上。

												

Qt MVC(模型-视图-代理)的更多相关文章

  1. QT MVC 模型/视图

    1. 模型视图实例一, QFileSystemModel  QTreeView ,model/view示例. #include <QApplication> #include <QF ...

  2. Qt之模型/视图(自定义风格)

    Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风 ...

  3. 【转】Qt之模型/视图

    [本文转自]http://blog.sina.com.cn/s/blog_a6fb6cc90101hh20.html   作者: 一去丶二三里 关于Qt中MVC的介绍与使用,助手中有一节模型/视图编程 ...

  4. Qt之模型/视图(委托)

    概念 不同于模型 - 视图 - 控制器模式,模型/视图设计不包括用于管理与用户交互的一个完全独立的组件.一般情况,视图负责将模型数据呈现给用户以及处理用户输入.为了输入更加具有灵活性,则由委托来执行交 ...

  5. Qt之模型/视图(自定义进度条)

    简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstr ...

  6. 设计模式-结构型模式, mvc 模型视图控制器模式(8)

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  7. Qt之模型/视图(实时更新数据)

    上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变的,那么如何实时更新成了一个很重要的问题!功能:(1)添加委托 ...

  8. MVC(模型-视图-控制器)的理解

    在 MVC 中,模型对象表示数据(例如日历应用程序中的待办事项或绘图程序中的图形),视图对象知道如何显示模型对象所表示的数据,控制器对象充当模型和视图的媒介.在“HelloWorld”应用程序中,模型 ...

  9. Qt之模型/视图(委托)

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...

随机推荐

  1. {HDU}{2516}{取石子游戏}{斐波那契博弈}

    题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...

  2. maven依赖关系中Scope的作用

      目前<scope>可以使用5个值: (1) compile (编译) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的classpat ...

  3. 在php中防止SQL注入的方法

    摘要:我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行 php能够更安全.整个PH ...

  4. 在CentOS上搭建Storm集群

    Here's a summary of the steps for setting up a Storm cluster: Set up a Zookeeper clusterInstall depe ...

  5. linux系统数据盘挂载教程

    将数据盘挂载为/www命令:#mkdir /www & mount /dev/sdb1 /www ----------------------------------------------- ...

  6. linux组、用户操作相关

    Linux删除用户组和用户时常用的一些命令和参数.1.从组中删除用户编辑/etc/group 找到GROUP1那一行,删除 A或者用命令gpasswd -d A GROUP2.建用户:adduser ...

  7. 阐述程序员如何实现IT职业定位

    [动力IT职业生涯规划课]阐述程序员如何实现IT职业定位 2016年9月16日下午17:00,南通动力IT教育创始人阙海忠先生,亲自向动力IT学员传授其十八年IT从业经验. 一个程序员的完美人生定位 ...

  8. Java BigDecimal

    1构造函数(主要测试参数类型为double和String的两个常用构造函数) BigDecimal aDouble =new BigDecimal(1.22); System.out.println( ...

  9. Flyweight(享元)--对象结构型模式

    1.意图 运用共享技术有效地支持大量细粒度的对象. 2.动机 Flyweight模式描述了如何共享对象,使得可以细粒度地使用它们,而无需高昂的代价.flyweight是一个共享对象,它可以同时在多个场 ...

  10. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...