3

我正在尝试创建一个用 C++ 定义的 QML 项目,该项目将在 QMLCamera显示帧之前拦截它们VideoOutput。就像是:

Window {
    Camera {
        id: camera
    }

    MyFrameinterceptor {
        id: myprocessing
        source: camera.mediaObject
    }

    VideoOutput {
        id: feedback
        source: myprocessing
    }
}

根据此评论,项目的mediaObject 属性Camera用于访问Camera.

但是,当我尝试从 QML 访问 mediaObject 时,例如使用

Text {
    text: qsTr(camera.mediaObject.objectName)
}

我得到一个TypeError: Cannot read property 'objectName' of undefined 当我尝试使用 C++ 中的 camera.mediaObject 属性时,我收到类似的消息,让我认为 mediaObject 未定义、未初始化或不存在。

我是 Qt 的新手,所以我可能会错过一些非常愚蠢的事情,比如启动相机或其他什么......但我对一个MediaPlayer项目有同样的问题

如何从 C++ 访问 QML 相机的 mediaObject?

4

1 回答 1

4

我也遇到过几次,我是这样解决的:

QObject * obj = rootview->rootObject()->findChild<QObject *>("camera");
QVariant mediaObject = obj->property("mediaObject");
QCamera * camera = qvariant_cast<QCamera *>(mediaObject);

然后我使用 aQVideoRendererControl来分配一个子类QAbstractVideoSurface来处理框架。

于 2014-07-22T19:05:29.093 回答