QT模型索引使用QModelIndex

QModelIndex有三个要素:行row 列column 父节点索引parent
但是注意我们并不能定义一个QModelIndex
QModelIndex的构造函数QModelIndex()的功能是创建一个新的空的QModelIndex

QModelIdex()是一个空索引,它其实可以代表任意model中的顶层节点,例如TableModel中每个Item的父节点都是顶层节点,所以每个Item的索引中的parent都是QModelIndex;

可以获得QModelIndex 的方法有两种:
1.通过Model中的成员函数index()取得,
2.通过和Model绑定的View的成员函数取得,

举例:
class TabelModel : pulic QAbstractTableModel
auto table = new TableModel();
auto tableView = new QTableView();

tableView.setModel(table);
QModelIndex index1 = tableView.currentIndex ();//
//QModelIndex Model::index(int row, int column, QModelIndex parent)
QModelIndex index2 = tabel.index(0,0,QModelIndex());//

pro文件添加:

QT+=widgets
SOURCES += \
    main.cpp
#include <QApplication>
#include <QTreeView>
#include <QDebug>
#include <QStandardItemModel>
int main(int argc, char *argv[])
{QApplication app(argc,argv);QStandardItemModel model;//创建标准项模型QStandardItem *parentItem=model.invisibleRootItem();//获取模型的根项(root Item),根项是不可见的QStandardItem *item0=new QStandardItem;//创建标准项0,并设置显示文本,图标和工具提示item0->setText("A");QPixmap pixmap0(50,50);pixmap0.fill("red");item0->setIcon(QIcon(pixmap0));item0->setToolTip("indexA");parentItem->appendRow(item0);//将创建的标准项作为根项的子项parentItem=item0;//将创建的标准项作为新的父项//创建新的标准项,它将作为item0的子项QStandardItem *item1=new QStandardItem;item1->setText("B");QPixmap pixmap1(50,50);pixmap1.fill("blue");item1->setIcon(QIcon(pixmap1));item1->setToolTip("indexB");parentItem->appendRow(item1);//创建新的标准项,这里使用另外一种方法来这是文本,图标和工具提示QStandardItem *item2=new QStandardItem;QPixmap pixmap2(50,50);pixmap2.fill("green");item2->setData("C",Qt::EditRole);item2->setData("indexC",Qt::ToolTipRole);item2->setData(QIcon(pixmap2),Qt::DecorationRole);parentItem->appendRow(item2);//在树型视图中显示模型QTreeView view;view.setModel(&model);view.show();//获取item0的索引并输出item0的子项数目,然后输出了item1的显示文本和工具提示QModelIndex indexA=model.index(0,0,QModelIndex());qDebug()<<"indexA row count:"<<model.rowCount(indexA);QModelIndex indexB=model.index(0,0,indexA);qDebug()<<"indexB text:"<<model.data(indexB,Qt::EditRole).toString();
qDebug()<<"indexB toolTip:"<<model.data(indexB,Qt::ToolTipRole).toString();return app.exec();
}

QT模型索引使用QModelIndex相关推荐

  1. Qt模型视图中的委托

    文章目录 1 初探QT模型视图中的委托 2 自定义委托 3 深度解析视图与委托 3.1 实例1:自定义视图显示方式 3.2 实例2:自定义视图显示方式提升用户体验 1 初探QT模型视图中的委托 首先来 ...

  2. Qt模型、视图解读之视图

    2.视图类 视图的概述: 视图包含了模型中的数据项,并将它们呈现给用户. 视图通常管理从模型获取数据的整体布局,它们可以自己渲染独立的数据项,也可以使用委托来处理渲染和编辑. 视图的特性: 视图还可以 ...

  3. Qt 模型视图框架解读之模型

    Qt 模型视图框架 前后阅读的好几遍,要不是项目中需要处理一些相对比较多的数据,这部分内容估计不会去急着去理解. 首先来了解下什么是模型和视图框架吧: 一般地:MVC 设计模式包括三个元素: 表示数据 ...

  4. Qt - 模型/视图编程(MVC编程自定义模型)

    模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示.MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据:视图(View ...

  5. QT学习笔记14(Qt模型视图结构)

    一.基础知识 1.MVC设计模式:是一种与用户界面相关的设计模式,通过此模式,可以有效的分离数据和用户界面. MVC包括三个要素: 表示数据的模型(Model):应用程序的对象 表示用户界面的视图(V ...

  6. Qt 模型视图编程之表头设置

    背景 Qt 模型视图编程中模型定义了标准接口对数据进行访问,可根据需求继承对应的抽象模型类来实现自定义的数据模型.一个基本的数据模型至少要实现以下虚函数: ①.rowCount:行数,返回要显示多少行 ...

  7. Qt模型视图框架:QListView

    一.描述 QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合.此视图不显示水平或垂直标题. QStandardItemModel * model = new QStandardI ...

  8. Qt模型model、视图view、代理

    例子为qt5应用及实例第8章 MVC是一种与用户界面相关的设计模式.通过使用此模型,可以有效地分离数据和用户界面.MVC设计模式包含三要素:表示数据的模型(Model).表示用户界面的视图(View) ...

  9. Qt 模型视图编程的简单实例

    导言: 当遇到一个相对复杂的项目软件的时候,处理的数据量相对较大,这时候从软件设计的角度,一般都会考虑运用模型视图的架构. Qt关于MVC编程组成部分: 大体上,模型.视图架构中众多类可以分为3组:模 ...

最新文章

  1. 张一鸣宣布卸任字节CEO!网友:完不成OKR被优化了!
  2. 移动IM开发指南2:心跳指令详解
  3. jsp页面获取后台传过来的list集合的长度
  4. vue-day03-vue组件化开发
  5. 我们都笑了freeeim
  6. python基础-深浅拷贝
  7. python判定串口已连接_python 自动识别并连接串口的实现
  8. Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
  9. 换一种态度看程序员(转)
  10. 分库分表 vs NewSQL,怎么选择?
  11. CF620E New Year Tree
  12. 推荐C语言视频<<跟着星仔学C语言>>
  13. 【计算理论】非确定性有限自动机 ( NFA ) 转换成 确定性有限自动机 ( DFA )
  14. 计算机表格快捷键,EXCEL表格所有的快捷键《excel一键到底 快捷键》
  15. 并(zhao)查(die)集详解以及其优化版本
  16. SAP BDC的应用
  17. 洛谷P1510-精卫填海(01背包)
  18. 让HTML页面也可以实现全屏效果
  19. 大学临近结束回望高中
  20. 【前端面试之Vue】

热门文章

  1. QML播放器切换文件路径
  2. 【学术交流】计算机国际会议中proceedings,conference,paper,workshop,demo的都是什么意思
  3. LevelDB的算分逻辑
  4. java计算机毕业设计医院门诊挂号系统源程序+mysql+系统+lw文档+远程调试
  5. google maps api
  6. 基于51单片机空气环境粉尘检测PM2.5 风扇控制系统设计
  7. Jira使用浅谈篇一
  8. 百度音乐 android,Android 百度音乐 - CNMO
  9. mysql 8.0.21 对用户授权报错 near ‘IDENTIFIED BY ‘123456‘ with grant option‘ at line 1
  10. HashSpace:探索无国界社交生态链的价值潜力