Qt Quick中,我们经常需要在QML和C++之间进行数据传递。在某些情况下,我们需要将QML中的ListModel传递给C++类使用。那么,如何实现这一功能呢?
一、在QML中创建一个ListModel
我们首先需要在QML中创建一个ListModel,并向其中添加数据。下面是一个简单的示例代码:
ListModel {
id: myModel
ListElement { text: "Apple" }
ListElement { text: "Banana" }
ListElement { text: "Orange" }
}
二、创建C++类
接下来,我们需要创建一个C++类MyClass,以便能够从QML中访问它。MyClass.h文件中定义了一个名为“setModel”的公共槽,用于接收ListModel。
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QObject>
#include <QQmlListProperty>
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = nullptr);
public slots:
void setModel(QQmlListProperty<QObject> list);
private:
QList<QObject *> m_data;
};
#endif // MYCLASS_H
<