[英]How to call arbitrary C++ functions from QML right at the object's creation?
這是我的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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.