Я пытаюсь создать элемент QML, определенный в C ++, который будет перехватывать фреймы из QML Camera
прежде чем они отображаются VideoOutput
, Что-то вроде:
Window {
Camera {
id: camera
}
MyFrameinterceptor {
id: myprocessing
source: camera.mediaObject
}
VideoOutput {
id: feedback
source: myprocessing
}
}
В соответствии с этот комментарий, свойство mediaObject из Camera
элемент может быть использован для доступа к C ++ части Camera
,
Однако, когда я пытаюсь получить доступ к mediaObject из QML, например, с
Text {
text: qsTr(camera.mediaObject.objectName)
}
Я получаю TypeError: Cannot read property 'objectName' of undefined
Когда я пытаюсь использовать свойство camera.mediaObject из C ++, я получаю похожие сообщения, позволяющие мне думать, что mediaObject не определен, неинициализирован или не существует.
Я новичок в Qt, поэтому я могу пропустить что-то действительно глупое, например, запустить камеру или что-то еще … Но у меня та же проблема с MediaPlayer
вещь
Как получить доступ к медиаобъекту камеры QML из C ++?
Я тоже несколько раз споткнулся, решил это так:
QObject * obj = rootview->rootObject()->findChild<QObject *>("camera");
QVariant mediaObject = obj->property("mediaObject");
QCamera * camera = qvariant_cast<QCamera *>(mediaObject);
Затем я использую QVideoRendererControl
назначить подкласс QAbstractVideoSurface
обрабатывать кадры.