Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

model gets not assigned to custom class



  • Hi guys,

    I have a custom component which implements a Q_PROPERTY like this:

    class NChartPlotter : public QQuickFramebufferObject
    {
        Q_OBJECT
        Q_PROPERTY(NChartAbstractDataModel* dataModel READ dataModel WRITE setDataModel)
    

    In main.cpp I create an instance of a NChartAbstractDataModel derived class and I set it as a contextProperty:

    NTestChartDataModel dm; //NTestChartDataModel is a subclass of NChartAbstractDataModel
    engine.rootContext()->setContextProperty("charDataModel", &dm);
    

    in QML I want to assign my model to a my view-component:

            ChartPlot {
                id: renderer
                anchors.fill: parent
                textureFollowsItemSize: true
                dataModel: charDataModel
            }
    

    PROBLEM:
    setDataModel gets never called.

    What am I doing wrong here?
    btw. this is my first qml-application.

    CU
    mts



  • ok, maybe I should have looked in the application-output earlier...
    -> "Unable to assign NTestChartDataModel to [unknown property type]"

    I do I let qml know about this class?

    EDIT:
    ok, I found that I have to use qRegisterMetaType to register my classType but I don't understand why I have to implement a copy-constructor?!
    Anyway, even if I implement a copy constructor to make the usage of qRegisterMetaType possible, I still get the "unknown property type" error on runtime.



  • You need to use qmlRegisterType, not just qRegisterMetaType, for any type which you expose to QML in such a way that you expect property resolution (including method invocation) to occur on an instance of that type.


Log in to reply