QML中动态加载C++数据, 数据的生产使用C++代码,而显示则交给QML去做。
首先继承一个QAbstractListModel类
class WeekModel : public QAbstractListModel { }
这是一个关于获取系统时间,然后把时间传给QML层的类。
#include <QAbstractListModel>
#include <QString>
#include <QVariant>
/*为星期提供数据*/
class WeekModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(QString date READ date WRITE setDate NOTIFY dateChanged);
Q_PROPERTY(QString weekday READ weekday WRITE setWeekday NOTIFY weekdayChanged)
public:
WeekModel(QObject *parent = 0);
~WeekModel();
int rowCount(const QModelIndex & parent) const; //获取数组长度
QVariant data(const QModelIndex & index, int role) const; //如何获取每个数据
signals:
void dateChanged();
void weekdayChanged();
private:
QString m_date; // 日期
QString m_weekday; // 星期几
};
Q_PROPERTY 一般只对单一的一个变量。
其中 READ WRITE 方法C++实现, QML使用。NOTIFY 方法一