Qt5.8文档翻译:QAbstractListModel类,QAbstractListModel Class
QAbstractListModel 类,提供了一个抽象的模型, 可被子类化,以用来创建一维的列表模型。 详细说明……
头文件: |
#include <QAbstractListModel> |
qmake指令: |
QT += core |
继承: |
|
被继承: |
QAbstractListModel 类,提供了一个抽象的模型, 可被子类化,以用来创建一维的列表模型。
QAbstractListModel 为那些想要以简单的非层次型条目序列的方式 表 示其数据的模型提供了一个标准接口。 它无法被直接使用,必须被子类化。
这个模型 , 相比于 QAbstractItemModel 来说 , 提供 了一个更具体的接口,因此, 它不适合于用来与树形视图配套使用;如果 妳需要提供那种形式的模型,那么,妳就需要子类化 QAbstractItemModel 。如果 妳需要使用多个列表模型来管理妳的数据的话,那么,更合适的做法是子类化 QAbstractTableModel 。
通过子类 化这个类,并且实现最少量的必须函数,即可创建 出简单的模型。例如 , 我们可以实现一个简单的、只读的、基于 QStringList 的模型, 它向某个 QListView 部件提供一组字符串。 在这种情况下,我们仅仅需要实现的是, rowCount ()函数,用来返回列表中条目的个数,以及 data ()函数,用来获取列表中指定的条目。
由于 这个模型代表的是一个一维的结构,因此, rowCount ()函数返回 的是模型中所有条目的个数。 它还实现了 columnCount ()函数,以便与所有类型的视图进行正确的交互,但是 ,默认情况下, 它会向所有视图告知,此模型仅仅包含一列数据。
在对 QAbstractListModel 进行子类化时,妳必须实现 rowCount ()和 data ()函数。行为比较端庄 的模型还会实现 headerData ()函数。
如果 妳的模型要在QML 中使用,并且需要使用那些超出 roleNames ()函数提供 的默认角色范围之外的角色,那么 ,妳必须覆盖这个函数。
对于 可编辑的列表模型, 妳还必须实现 setData ()函数, 以及 flags ()函数,让后者返回一个包含了 Qt::ItemIsEditable 的值。
注意 , QAbstractListModel 针对 columnCount ()提供了一个默认实现,会告知各个视图说这个模型中只包含一个数据列。
对于那些提供 了可变长度的列表类型数据结构风格接口的模型, 可以实现 insertRows ()和 removeRows ()。 在实现这些函数时,要注意, 要调用相关的一些其它函数,以使得所有当前处于连接状态的视图都知道发生了变化:
•. 在实现 insertRows ()的代码中, 在向数据结构中插入新行 之前 ,必须调用 beginInsertRows (), 在插入新行 之后 ,必须 立即 调用 endInsertRows ()。
•. 在实现 removeRows ()的代码中, 在从数据结构中删除数据行 之前 ,必须调用 beginRemoveRows (), 在删除数据行 之后 ,必须 立即 调用 endRemoveRows ()。
注意 : 在 模型子类 化参考 中,有一些关于对模型进行子类化时要遵守的常规指南。
参考 模型 类 、 模型子类 化参考 、 QAbstractItemView 、 QAbstractTableModel 和 条目视图解谜示例 。
覆盖 了 QAbstractItemModel::index ()。
返回亲代对象parent之下的第 row 行第 column 列的数据的索引。
参考 parent () 。
未知美人
菊花
未知美人
Satellizer eL Bridget
短信报警
12110
这些专业人士值得点赞
Your opinionsHxLauncher: Launch Android applications by voice commands