пятница, 13 января 2017 г.

Доступ к свойствам QML объекта загруженного через QQmlApplicationEngine из C++


Доступ с свойствам QML объекта из C++


QObject *rootObject = engine.rootObjects().first(); - доступ к корневому элементу.

QObject *qmlObject = rootObject->findChild<QObject*>("mainWindow"); - доступ к элементу по имени относительно корневого элемента.

C++ side

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QDebug>
 
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
 
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
 
    // Step 1: get access to the root object
    QObject *rootObject = engine.rootObjects().first();
    QObject *qmlObject = rootObject->findChild<QObject*>("mainWindow");
 
    // Step 2a: set or get the desired property value for the root object
    rootObject->setProperty("visible", true);
    qDebug() << rootObject->property("visible");
 
    // Step 2b: set or get the desired property value for any qml object
    qmlObject->setProperty("visible", true);
    qDebug() << qmlObject->property("visible");
 
    return app.exec();
}

QML side

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
    id: mainWindow
    objectName: "mainWindow"
    ...
}

Ссылка: http://stackoverflow.com/questions/23177839/how-can-i-access-my-window-object-properties-from-c-while-using-qqmlapplicatio




0 коммент.:

Отправить комментарий