Acceso a las propiedades de los objetos QML de C ++ con la definición Q_Property

StackOverflow https://stackoverflow.com/questions/6033515

  •  14-11-2019
  •  | 
  •  

Pregunta

Lo sé, es posible definir un QOBJECT con propiedades personalizadas y exponer este objeto en el entorno QML.Pero de esta manera, para cada propiedad nueva, necesitaría recompilar el código C ++.

¿Es posible, hacer una unión dinámica de C ++ / QT a los objetos QML? Algo así como:

//C++ code: 
updateProperty("myQmlObject.any_property", "Hello World");

¡Gracias!

resuelto:

_view->rootContext()->setContextProperty( "cppmessage" , "Hello from C++" );

Dónde: Ver es un QDeclaratiewView, y CPPMEsage se usa en QML sin declaración anterior como: "Texto: CPPMESSAPE"

Este enlace fue útil para encontrar la solución: http://xizhizhu.blogspot.com/2010/10/hybrid-application-using-qml-and-qt-c.html

¿Fue útil?

Solución

Yes, This can be done. Link

// MyItem.qml
import QtQuick 1.0

Item {
    property int someNumber: 100
}

//C++
QDeclarativeEngine engine;
QDeclarativeComponent component(&engine, "MyItem.qml");
QObject *object = component.create();

qDebug() << "Property value:" << QDeclarativeProperty::read(object,"someNumber").toInt();
QDeclarativeProperty::write(object, "someNumber", 5000);

qDebug() << "Property value:" << object->property("someNumber").toInt();
object->setProperty("someNumber", 100);

Edit:1 Another way to do it , as suggested by @Valentin is listed here link

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top