c++ - 在 QML 的 VideoOutput 上显示用 C++ 创建的相机
问题描述
我在将 C++ 创建的QCamera显示到 QML 中的VideoOutput时遇到问题。如果我在 QML 中使用相机的这种方式,一切都很好,我得到视频输出:
Item{
VideoOutput
{
id: videoOutput
anchors.fill: parent
source: camera
}
Camera
{
id: camera
}
}
但就我而言,相机不在 QML 中。我正在用 C++ 创建它。我试图在 C++ 中创建它并将其设置为 contextProperty,因此在 qml 的 VideoOutput 的源代码中使用它。所以这是我的main.cpp。
QCamera* camera;
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (const QCameraInfo &cameraInfo, cameras)
{
qDebug() << cameraInfo.description();
camera = new QCamera(cameraInfo);
}
if(camera)
{
qDebug() << "setContextProperty camera ";
engine.rootContext()->setContextProperty("mCamera", camera);
}
一切都很好,相机被检测到,我在 QML 中使用它,如下所示:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Item
{
id: cameraView
height: 230
width: 300
anchors.centerIn: parent
VideoOutput
{
id: videoOutput
anchors.fill: parent
source: mCamera
}
}
但是这种方式没有视频输出。这有可能实现吗?提前致谢。
解决方案
您不能直接将 a 分配给 aQCamera
的来源VideoOutput
。
您可以做的是设置deviceId
QMLCamera
以匹配您的QCamera
:
在您的 C++ 中:
engine.rootContext()->setContextProperty("deviceId", cameraInfo.deviceName);
在你的 QML 中:
Camera {
id: camera
deviceId: cameraDeviceId
}
VideoOutput {
id: videoOutput
anchors.fill: parent
source: camera
}
推荐阅读
- multidimensional-array - 如何获取 laravel 8 的 eloquent 关系数组结果中的值
- react-native - React Native & Redux:未定义不是一个对象(评估'state.counter')
- vue-cli - Vue 创建“projectName” ERR_SOCKET_TIMEOUT - 无论如何总是失败 - 淘宝
- c# - 如何将 WPF DataGrid 列绑定到字段的自定义系统属性值?
- api - 是否可以通过调用 API 来执行 Zap 并获取 JSON 响应?
- scala - 带有数据框 API 的 spark/scala 中的 NNLS 问题
- azure - Azure 数据工厂 Thumbling Window 触发器限制是什么?
- python - minimax 算法在两人回合制游戏中不起作用
- c++ - 是否可以使用 CRTP 访问 c++ 中的子类型?
- nginx - Nginx 默认后端自定义错误页面未正确呈现