最近有个需求,就是在QML中显示一个表格, 表格中显示一些字符,此外还需要显示数值和图形(圆形图像不同颜色代表true/false)。网上找了很多内容发现不是很适用,好多都是适用widget适用C++来做表格。但是widget做的在QML下使用感觉又有点问题(widget使用paint渲染, 但是QML使用的是scense graph,使用QSGNode)。那还是用QAbsractTableMode来用C++实现Model, 而在QML下使用TableView,把显示和数据分开处理。
对于使用QAbstractTableMode, 网上有比较多的介绍。下面这个是写的不错的:
https://blog.youkuaiyun.com/qq411633267/article/details/80817275
根据这篇,在C++部分,实现了下面的几个函数,分别是:
columnCount(const QModelIndex &parent) const; 返回表格的列数
rowCount(const QModelIndex &parent) const; 返回表格的行数;
QVariant data(const QModelIndex &index, int role) const; 根据index和role来返回表格数据;
QHash<int, QByteArray> roleNames() const; 返回roles;
在创建Model时, 创建一个QStringList, 设置几个roles。每一列设置一个role。
在QML中,Table