Моя модель:
// human.h
#include <QObject>
#include <QString>
class Human : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name DESIGNABLE false SCRIPTABLE false CONSTANT FINAL)
public:
explicit Human(const QString &name, QObject *parent = 0);
QString name() const { return m_name; }
private:
const QString m_name;
};
// human.cpp
#include "human.h"
Human::Human(const QString &name, QObject *parent) :
QObject(parent), m_name(name)
{
}
Тут написано, что передавать C++ объекты в контекст qml можно следующим образом:
// main.cpp
#include <QApplication>
#include "qmlapplicationviewer.h"
#include <QList>
#include "human.h"
#include <QDeclarativeContext>
Q_DECLARE_METATYPE(QList<Human*>)
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
QList<Human*> dn;
dn.append(new Human("Vasya"));
dn.append(new Human("Dasha"));
dn.append(new Human("Petya"));
dn.append(new Human("Masha"));
QmlApplicationViewer viewer;
QDeclarativeContext* ctx = viewer.rootContext();
ctx->setContextProperty("humans", QVariant::fromValue(dn));
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/test/main.qml"));
viewer.showExpanded();
return app->exec();
}
// main.qml
import QtQuick 1.0
Rectangle {
width: 360
height: 360
ListView {
width: parent.width
height: parent.height
model: humans
delegate: Rectangle {
height: 25
width: 100
Text { text: model.modelData.name }
}
}
}
При выполнении qml кода программа крашится.
Наверняка кто-нибудь уже сталкивался с этим. Как правильно организовать межязыковое взаимодействие?