作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要用 Qt 实现一个表。
我相信我会起诉一个 QAbstractTableModel,一个 QTableView 使用这个模型。
我知道我必须编辑模型的 rowCount()、columnCount() 和 data() 函数。
但是,我不明白如何在模型中准确设置数据,以便 data() 函数可以检索它..
是否为此提供了 setData() 函数?我已经看到它以 EditRole 作为参数,这是我不想要的,因为我不希望我的表可编辑。
那么,如何使用 data() 函数在模型中“设置”数据,或者让模型获取数据?
此外,data() 函数是如何调用的,即谁调用它以及需要在哪里调用它?
请帮我解决一下这个。
谢谢。
最佳答案
实际数据如何保存在内存中,如何从数据存储中生成或查询完全取决于您。如果是静态数据,可以使用 Qt container classes或自定义数据结构。
您只需要重新实现 setData()
可编辑模型的方法。
您需要在不可编辑的 QAbstractTableModel
中实现 4 种方法子类:
int rowCount()
int columnCount()
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole )
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole)
QTableView
实例。前两个方法应该返回表的维度。例如,如果
rowCount()
返回
10
和
columnCount()
返回
4
, View 将调用
data()
方法 40 次(每个单元格一次)询问模型内部数据结构中的实际数据。
retrieveDataFromMarsCuriosity()
在你的模型中。该插槽填充数据结构并连接到
QPushButton
例如,您可以通过单击按钮获取新数据。
beginRemoveRows()
,
endRemoveRows()
,
beginInsertRows()
,
endInsertRows()
及其列对应物。
关于qt - 如何在 QAbstractTableModel 中设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189693/
我是一名优秀的程序员,十分优秀!