如何在对象创建时就从QML调用任意C ++函数?

时间:2019-02-18 03:59:30

标签: c++ qt qml

这是我的main.qml:

import QtQuick 2.0
import A 1.0

Item {

    width: 1280
    height: 720

    OpenGlVideoQtQuick {

    }
}

这是OpenGlVideoQtQuick的一部分:

class OpenGlVideoQtQuick : public QQuickItem
{
    Q_OBJECT
    Q_PROPERTY(qreal t READ t WRITE setT NOTIFY tChanged)

public:
    OpenGlVideoQtQuick();

    qreal t() const { return m_t; }
    void setT(qreal t);
    Q_INVOKABLE void initRtspMedia(const QString &uri);
}

如何在创建initRtspMedia() QML对象时立即从QML调用OpenGlVideoQtQuick?我只看到按钮和其他东西如何调用C ++代码,而没有看到如何立即调用它。

1 个答案:

答案 0 :(得分:3)

在这种情况下,您可以使用Component.onCompleted

PATCH

或者在C ++中,您可以借助QQmlParserStatus来做到这一点:

import QtQuick 2.0
import A 1.0

Item {

    width: 1280
    height: 720

    OpenGlVideoQtQuick {
        id: opengl_video
        Component.onCompleted: opengl_video.initRtspMedia("some uri")
    }
}