QAbstractListModel类
QAbstractListModel类提供了一个抽象模型,可以被继承以创建一维列表模型。 更多...
头文件 | #include <QAbstractListModel> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QAbstractItemModel |
继承自 | QPdfLinkModel、QPdfSearchModel、QStringListModel、QVirtualKeyboardSelectionListModel和QWebEngineHistoryModel |
公开函数
QAbstractListModel(QObject *parent = nullptr) | |
virtual | ~QAbstractListModel() |
重新实现的公开函数
virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
virtual QModelIndex | index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override |
virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
详细描述
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。
成员函数文档
[显式]
QObject *parent = nullptr)
使用给定的父对象构建一个抽象列表模型。
[虚拟 noexcept]
QAbstractListModel::~QAbstractListModel()
销毁抽象列表模型。
[覆盖虚拟]
bool QAbstractListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
重实现:QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)。
[覆盖虚拟]
Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
重实现:QAbstractItemModel::flags(const QModelIndex &index) const。
[重写虚函数]
QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const
重写: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
返回行和列中的数据的索引,其中 parent 为父类。
另请参阅 parent().
[重写虚函数]
QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
重写: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
© 2024 The Qt Company Ltd. 本文档中所包含文档贡献的版权归其各自所有者所有。本处提供的文档是根据免费软件基金会发布的 GNU自由文档许可证版本1.3 的条款授予许可的。Qt及其相关标志是芬兰及/或其他国家的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。