Estoy escribiendo una aplicación QML + Qt. he definido una clase como esta:Cómo exponer un modelo C++ a QML
class MainClass : public QObject
{
Q_OBJECT
public:
rosterItemModel m_rosterItemModel;
.
.
.
}
modelo rosterItemModel es una clase derivada de QAbstractListModel. expuse MainClass a QML parte de usar esta función:
qmlRegisterType<MainClass>("CPPIntegrate", 1, 0, "MainClass");
Ahora desea asignar este modelo (m_rosterItemModel) de MainClass para modelar la propiedad de un ListView en QML. probé las siguientes maneras pero ninguno de ellos eran útiles :(
- Me trataron de declarar m_rosterItemModel como una propiedad utilizando Q_PROPERTY. que no podía hacer eso porque dice que no es QAbstractListModel copia-poder.
- me trataron de obtener un puntero a m_rosterItemModel en el archivo QML usando una función Q_INVOKABLE en MainClass. Pero no fue útil también.
Podría alguien ayudarme?
Me he registrado MainClass a QML usando qmlRegisterType en Para usar señales y ranuras MainClass fácilmente en QML creando una instancia de este como MainClass {id: mc}. De todas formas . gracias :) – saeed
Parece, por experiencia, que en el segundo caso también se registra la clase de modelo en necassary: 'qmlRegisterType (" CPPIntegrate ", 1, 0," MainClass ");' También, usando 'const' el modificador parece romper la interoperación. El último bit peculiar es referirse siempre a la clase con su calificación completa del espacio de nombres dentro de las declaraciones Q_PROPERTY y Q_INVOKABLE del encabezado. Además, si se intenta devolver algún puntero de clase base (como QAbstractItemModel), la interoperabilidad volverá a fallar, así que ten cuidado. –
mlvljr
¿Cómo obtener mainClassInstance? – Brent81