10.model/view实例(2)

任务:显示一个2x3的表格,将表格中的数据显示如下:

    

思考:

1.如何显示数据和上个例子一样。

2.但是每个单元格的数据都是有角色划分的。 Qt::ItemDataRole

3.View从Model中获取数据,通过data函数。每一个单元格根据角色,调用多次data函数。个人理解:单元格什么角色都调用一次data函数。

代码如下:就是修改data函数的代码。

QVariant MyModel::data(const QModelIndex &index, int role) const
{
    int row = index.row();
    int col = index.column();

    if(role == Qt::DisplayRole) {
        if(row == 0 && col == 0)
            return QString ("Row%1,Column%2").arg(index.row()+1).arg(index.column()+1);
        if(row == 0 && col == 2)
            return QString ("Row%1,Column%2").arg(index.row()+1).arg(index.column()+1);
        if(row == 1 && col == 0)
            return QString ("Row%1,Column%2").arg(index.row()+1).arg(index.column()+1);
        if(row == 1 && col == 2)
            return QString ("Row%1,Column%2").arg(index.row()+1).arg(index.column()+1);
        if(row == 0 && col == 1)
            return QString ("<--left");
        if(row == 1 && col == 1)
            return QString ("right-->");
    }

    if(role == Qt::FontRole) {
        if(row == 0 && col == 0) {
            QFont bold;
            bold.setBold(true);
            return bold;
        }
    }

    if(role == Qt::TextAlignmentRole) {
        if(row == 0 && col == 1)
            return Qt::AlignLeft + Qt::AlignVCenter;
        if(row == 1 && col == 1)
            return Qt::AlignRight + Qt::AlignVCenter;
    }

    if(role == Qt::BackgroundColorRole) {
        if(row == 1 && col == 2)
            return Qt::red;
    }

    if(role == Qt::CheckStateRole) {
        if(row == 1 && col == 0)
            return Qt::Checked;
    }

    return QVariant();
}
时间: 2024-10-11 05:14:38

10.model/view实例(2)的相关文章

10.model/view实例(4)

任务:给表单的每一列添加列名. 思考: 1.只需要添加一个函数 headerData(). 横向方面添加列名 代码如下: QVariant MyModel::headerData(int section, Qt::Orientation orientation, int role) const { if(role == Qt::DisplayRole) { if(orientation == Qt::Horizontal) { switch (section) { case 0: return

11.树形Model/View实例

任务1:显示如图的树形结构 思考: 1.使用QTreeView显示. 2.Model使用QStandardItemModel,qt的一个标准model. 3.QStandardItemModel下每一个单元都可以看作QStandardItem. 4.QStandardItemModel中invisibleRootItem()函数返回一个看不到的根. 5.在这个根上添加行. 代码如下: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #

QT开发(三十八)——Model/View框架编程

QT开发(三十八)--Model/View框架编程 一.自定义模型 1.自定义只读模型 QAbstractItemModel为自定义模型提供了一个足够灵活的接口,能够支持数据源的层次结构,能够对数据进行增删改操作,还能够支持拖放.QT提供了 QAbstarctListModel和QAbstractTableModel两个类来简化非层次数据模型的开发,适合于结合列表和表格使用. 自定义模型需要考虑模型管理的的数据结构适合的视图的显示方式.如果模型的数据仅仅用于列表或表格的显示,那么可以使用QAbs

利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理

利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理 2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论:0 | 浏览:45 | 该类在MVC中可以方便管理配置信息,可以直接把Model储存进数据库或者从数据库去除数据转为Model. 1 何为配置项目? 比如网站的名称,页脚信息,meta中的KeyWord信息等,如果不想硬编码到网页里,就需要使用配置文件进行储存,通常都是储存到数据库中.使用的时候读取出来

qt model/view 架构自定义模型之QStringListModel

# -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. #QStringListModel 是一个可编辑的模型,可以为组件提供一系列字符串作为数据. #看作是封装了 QStringList 的模型.QStringList 是一种很常用的数据类型,实际上 #是一个字符串列表(也就是 QList<QString>).既然是列表,它也就是线性的数据结构, #因

Qt Model/View(转)

介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提 供一个标准的model接口,使得更多的数据源可以被这些item view使用.这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类如何使用. Model/View 结构 Model-View-Controller(MVC), 是从Smalltalk发展而来的一种

spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程

整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:request 从ModelAndView中获取view对象. 获取view对象一般是通过viewResolver来解析view name来完成的.若ModelAndView中view 不存在或者ModelAndView本身为null则填充默认值.代码如下: ModelAndView中view 不存在或者Mod

MVC模式(Model View Controller)下实现数据库的连接,对数据的删,查操作

MVC模式(Model View Controller): Model:DAO模型 View:JSP  在页面上填写java代码实现显示 Controller:Servlet 重定向和请求的转发: 若目标的相应页面不需要从request里面读取任何信息,则可以使用重定向,可以防止表单重复提交: ------------------------------------------------------------------------------------------------ Stude

QT MVC 技术Model/View初探

Model/View实现表格技术 [+] 一.简介 Model/View结构使数据管理与相应的数据显示相互独立,并提供了一系列标准的函数接口和用于Model模块与View模块之间的通信.它从MVC演化而来,MVC由三种对象组成,Model是应用程序对象,View是它的屏幕表示,Controller定义了用户界面如何对用户输入进行响应.把MVC中的View和Controller合在一起,就形成了Model/View结构. 二.运行图 (1)为了灵活对用户的输入进行处理,引入了Delegate,Mo