mylistmodel.h
#ifndef MYLISTMODEL_H
#define MYLISTMODEL_H
#include <QAbstractListModel>
class MyListModel : public QAbstractListModel
{
Q_OBJECT
public:
enum ColumnType {
Name,
Value
};
class Data {
friend class MyListModel;
Data(QString name, int value)
: name(name), value(value){}
public:
QString name;
int value;
};
explicit MyListModel(QObject *parent = nullptr);
// Basic functionality:
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int,QByteArray> roleNames() const override;
private:
QList<Data> m_data;
};
mylistmodel.cpp
在模型的实现中最重要的函数是roleNames,为什么可以在QML中直接使用数据对象中的成员的原因就在此处,里面是一个MAP,QML系统根据字段的名称查找数据角色ID,然后时候用这个ID请求模型数据