QAbstractItemView::setRootIndex(const QModelIndex & index) 失效

问题:

在逻辑中使用了,
QAbstractItemView::setRootIndex(const QModelIndex
& index),

第一次设置生效, view 进入了model 中指定的item, view 内只显示该item内部的children items.
这个效果是我要的.

bug:

对 model, view,等做过一些操作后(最有代表性的是:过滤), root item 不再是我人为设定的了,
变成了"整棵树"原始model的root.

重现方式:

用 QFileSystemModel 方式, 查阅 某指定文件目录, 并对其内容过滤, 再之后"清空"过滤条件; 若 root model
index 丢失, 则view会显示整个计算机目录.

bug原因:

在过滤等操作时, 如果没有任何东西被"接受"(accept), 则指定的 root model index 丢失,
因此失效.

解决:

至少在过滤时, 让指定的 root index "通过"过滤, 保证了 root model index 的有效性.

QAbstractItemView::setRootIndex(const QModelIndex & index)
失效

时间: 2024-10-12 21:29:38

QAbstractItemView::setRootIndex(const QModelIndex & index) 失效的相关文章

Qt之QHeaderView自定义排序(获取正确的QModelIndex)

简述 前几节中分享过关于自定义排序的功能,貌似我们之前的内容已经可以很好地解决排序问题了,但是,会由此引发一些很难发现的问题...比如:获取QModelIndex索引错误. 下面,我们先来实现一个整行选中的效果. 简述 错误处理 效果 源码 分析 正常处理 效果 源码 错误处理 效果 下面是一个非正常的的效果,选中当前行会造成更新错误,Why? 源码 // 连接信号槽 connect(pTableView, SIGNAL(clicked(QModelIndex)), this, SLOT(onC

QModelIndex 与 QStandardItem互转

1. QModelIndex 转换成QStandardItem QStandardItem * item=QStandardItemModel::?itemFromIndex(const QModelIndex & index) const 2 .QStandardItem 转换成 QModelIndex QModelIndex model = QStandardItem::?index() const

Qt Model/View(转)

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

Qt ModelView模式

Qt Model/View模式 Model/View  结构 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系. Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常被用于构建用户界面.经典设计模式的著作中有这样的描述: MVC 由三种对象组成.Model是应用程序对象,View是它的屏幕表示,Controller定义了用户界面如何对用户输入进行响应.在MVC之前,用户界面设计倾向于三者揉合在

Qt Model/View( 一)

http://doc.trolltech.com/main-snapshot/model-view-programming.html 介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用.这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类

QT开发(三十六)——Model/View框架

QT开发(三十六)--Model/View框架 一.Model/View框架简介 1.Model/View框架核心思想 Model/View框架的核心思想是模型(数据)与视图(显示)相分离,模型对外提供标准接口存取数据,不关心数据如何显示,视图自定义数据的显示方式,不关心数据如何组织存储. Model/View框架中数据与显示的分离,可以允许使用不同界面显示同一数据,也能够在不改变数据的情况下添加新的显示界面.为了处理用户输入,引入了委托(delegate).引入委托的好处是可以自定义数据项的渲

38.Qt模型/视图结构

1 模型/视图类 InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardModel类,QDirModel类,QStringListModel类,以及QColumnView类,QHeaderView类,QListView类,QTableView类和QTreeView类 简单目录浏览器: 1 #include "mainwindow.h" 2 #include <QApplication> 3 4 #include <QAbstractItem

代理Delegate的小应用(代理日期控件和下拉框)

前言 在平时关于表格一类的的控件使用中,不可避免需要修改每个Item的值,通过在Item中嵌入不同的控件对编辑的内容进行限定,然而在表格的Item中插入的控件始终显示,当表格中item项很多的时候,会影响表格的美观和用户的体验.此时Delegate代理就派上了用场,通过Delegate可以使得Item的控件在编辑状态才显示,提高了用户的体验满意度. 效果展示 1.展示状态: 2.编辑状态   设计思路 这类效果的实现主要使用了QItemDelegate类,QItemDelegate类为数据项It

【转】Qt数据库总结

转自:http://blog.chinaunix.net/uid-25201977-id-3014100.html #include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYS