这是我的 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);
}
如何在创建 OpenGlVideoQtQuick
QML 对象时立即从 QML 调用 initRtspMedia()
?我只看到按钮和其他东西如何调用 C++ 代码,但没有看到如何立即调用它。
最佳答案
对于这种情况,您可以使用 Component.onCompleted :
import QtQuick 2.0
import A 1.0
Item {
width: 1280
height: 720
OpenGlVideoQtQuick {
id: opengl_video
Component.onCompleted: opengl_video.initRtspMedia("some uri")
}
}
或者在 C++ 中,您可以借助 QQmlParserStatus 来完成:
class OpenGlVideoQtQuick : public QQuickItem, public QQmlParserStatus
{
Q_OBJECT
Q_PROPERTY(qreal t READ t WRITE setT NOTIFY tChanged)
Q_INTERFACES(QQmlParserStatus)
public:
OpenGlVideoQtQuick();
qreal t() const { return m_t; }
void setT(qreal t);
Q_INVOKABLE void initRtspMedia(const QString &uri);
void classBegin() {}
void componentComplete() {
initRtspMedia("some uri");
}
}
关于c++ - 如何在对象创建时从 QML 调用任意 C++ 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54740289/