[Qiita]2016 Qt advent calendar
import QtQuick 2.0
Item {
id: root
width: 1024
height: 768
Rectangle {
objectName: "rect"
width: 1024
height: 768
color: "skyblue"
Text {
id: text
}
}
function qmlFunction(value) {
text.text = value.form.text
text.x = value.rect.x
text.y = value.rect.y
text.width = value.rect.width
text.height = value.rect.height
console.log(value.name)
console.log(value.rect.x)
console.log(value.rect.width)
console.log(value.form.text)
}
}
#include "data.h"
#include <QGuiApplication>
#include <QQuickView>
#include <QMetaObject>
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQuickView view(QUrl::fromLocalFile("main.qml"));
Data d;
d.rect_ = QRect(50, 50, 250, 250);
d.form_.text_ = QString("this is form text!!");
QMetaObject::invokeMethod((QObject*)view.rootObject(), "qmlFunction",
Q_ARG(QVariant, QVariant::fromValue(d)));
view.show();
return app.exec();
}
#pragma once
#include <QObject>
#include <QString>
struct Form {
Q_GADGET
public:
Q_PROPERTY(QString text MEMBER text_)
bool operator!=(const Form &rhs) { return this != &rhs; }
QString text_;
};
Q_DECLARE_METATYPE(Form)
#pragma once
#include "form.h"
#include <QObject>
#include <QString>
#include <QRect>
struct Data {
Q_GADGET
public:
Q_PROPERTY(QRect rect MEMBER rect_);
Q_PROPERTY(Form form MEMBER form_);
QRect rect_;
Form form_;
};
Q_DECLARE_METATYPE(Data)
TEMPLATE = app
TARGET = cpp2qml
# By default, QT contains core and gui (redefine)
QT = core gui quick
CONFIG += c++11
CONFIG -= app_bundle
MOC_DIR = .moc
OBJECTS_DIR = .obj
HEADERS += \
data.h \
form.h
SOURCES += \
main.cpp
.moc/
.obj/
.qmake.stash
Makefile
cpp2qml