C++

QT重写QAbstractItemModel--Apple的学习

2023-07-28  本文已影响0人  applecai

一,前言

我之前说的QT要再学习的模块就是关于表格模型或表格显示的重写自定义数据模型类,它会继承QAbstractItemModel类。毕竟表格还是用的比较多的显示方式,所以重新定义它的界面才可以让工具软件更人性化,体现差异化。

二,自定义需求

按example及网上的教程及help文件来学习,然后自己写一个简单的自定义类模型。其实以前我就写过sql的数据模型,但是仅按example改了些,理解也不深入不能灵活使用。本次目的要求理解,然后可以从空白开始写。

三,遇到的问题

  1. 没有显示出TableView
    答:因为rowCount和columnCount通过item项目创建后,默认有了小框架,由于我没有设置parent,所以返回值为0,导致无法显示,改成直接显示列表的行数,及固定的2列即可解决问题。
    if (!parent.isValid())
       return 0;
  1. 好奇parent是什么时候赋值的
    答:调试了example,是在index函数中设置了parent。那么index又是什么调用的呢!如下在刷新的界面的时候会一直调用。


    image.png
  2. 这些重写的函数,哪些可以提供格式的多样化?
    答:主要是data和setdata函数。核心是对不同枚举对象的显示和编辑处理。


    image.png

四,输出物

我先做一个简单的,没有parent的数据模型


image.png

五,小结

安装包有example真的就简单很多了,毕竟有些内容的理解需要通过实验来进行闭环验证,但是我发现一个漏洞,就是若没有example的话,我要怎么才能查出为什么不显示的问题呢!因为函数间的调用关系我并不清楚,help文档也没看到,而且也没看过源码,所以这是将来要找机会解决的问题,否则若有bug,我只能靠猜了,效率会很低,是否还可以问chatgpt呢,哈哈~

上一篇下一篇

猜你喜欢

热点阅读