当前位置:网站首页>Qt TreeView 问题记录
Qt TreeView 问题记录
2022-07-31 05:18:00 【Awake1234】
项目场景:记一次Qt TreeView 获取一个rootIndex()下的子节点的QModelIndex()时遇到的问题
问题描述:
在查找如下的树形结构根节点下的子节点的QModelIndex()时使用QTreeview的
child(int arow, int acolumn)方法,然后想根据此节点的QModelIndex()使用isexpanded()方法来判断指定节点是否是展开的,这时候问题出现了,指定的节点是展开的,但使用isexpanded() 却判断为false.
(图片仅供参考)
原因分析:
首先查看QT官方文档对rootIndex的描述
注意The root can be invalid 这句话,上述有多个并列的兄弟节点的情况下,根节点并不是显式的,这里的根节点就是invalid的,虽然记录了与子节点的关系,但是是无效的,一开始我以为只要找到根节点就能找到指定的子节点。
然后再看一下child()方法的源码
inline QModelIndex QModelIndex::child(int arow, int acolumn) const
{ return m ? m->index(arow, acolumn, *this) : QModelIndex(); }
这里的m是constQAbstractItemModel *m; 如果是无效的根节点的话m就会被初始化为nullpter,所以这里返回的是QModelIndex(),问题就出现这里。
解决方案:
使用createIndex(),参数三可以通过自定义的TreeItem 来维护父子节点之间的关系
inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, void *adata) const
{ return QModelIndex(arow, acolumn, adata, this); }
边栏推荐
- 哈希表基础
- 堆和栈的区别
- Redis-Hash
- Cholesterol-PEG-NHS NHS-PEG-CLS 胆固醇-聚乙二醇-活性酯可修饰小分子材料
- CAS: 1403744-37-5 DSPE-PEG-FA Phospholipid-Polyethylene Glycol-Folic Acid for Scientific Research
- Image binarization processing of opencv
- Software Testing Interview Questions 2021
- Picture-in-Picture API in the browser
- Cholesterol-PEG-Thiol CLS-PEG-SH Cholesterol-Polyethylene Glycol-Sulfhydryl
- 力扣151. 颠倒字符串中的单词
猜你喜欢
DSPE-PEG-COOH CAS: 1403744-37-5 Phospholipid-polyethylene glycol-carboxy lipid PEG conjugate
链表理论基础
Unity Text一个简单的输入特效
IDEA overview and installation and debugging
Unity加载GIf动画
The solution to the IDEA console not being able to enter information
【Latex】TexLive+VScode+SumatraPDF 配置LaTex编辑环境
CSDN上markdown编写的一些便捷操作
概率论相关笔记
WIN10,配置adb环境
随机推荐
关于Iframe
UR3机器人运动学分析之逆运动学分析
Software Testing Interview Questions 2021
Cholesterol-PEG-NHS NHS-PEG-CLS 胆固醇-聚乙二醇-活性酯可修饰小分子材料
2021-09-30
MW: 3400 4-Arm PEG-DSPE four-arm-polyethylene glycol-phospholipid a saturated 18-carbon phospholipid
Tensorflow——demo
Embedding前沿了解
Unity Text一个简单的输入特效
Three methods of accessing image pixels in opencv
能否更上一层楼?探究 CMake 争论
DSPE-PEG-Biotin, CAS: 385437-57-0, phospholipid-polyethylene glycol-biotin prolongs circulating half-life
DingTalk H5 micro-app login authentication
会话和饼干,令牌
力扣.字母异位词分组
自己设置的私密文件,在哪找
C语言对文件的操作(完整版)
螺旋矩阵Ⅱ
链表理论基础
【Rhapsody学习笔记】2:Count Down