【问题标题】:QML camera item missing from rootObject->childItemsrootObject->childItems 中缺少 QML 相机项目
【发布时间】:2015-11-19 13:16:52
【问题描述】:

我正在使用 Qt 在 Android 上开发人脸识别应用程序。我的用户界面中有一个 QtQuickWidget;设法让 QtQuick 相机工作;但无法在 C++ 中获取帧。

我尝试了答案Qt QML Camera to C++ QImage on Android,这看起来像是问题的“解决方案”但是:ui->quickWidget->rootObject()->childItems() 没有相机项目.. 它有所有其他项目(按钮 1,vf)。所以 findChild 失败了。

请求对此有所了解。提前致谢。 QML:

import QtQuick 2.5
import QtMultimedia 5.5

Item {
    id: camvf

    Camera {
        id: cam
        objectName: "cam"
    }


    VideoOutput {
        id: vf
        objectName: "vf"
        source: cam
        width: parent.width
        height: parent.height-100
        anchors.top: parent.top
        focus : visible // to receive focus and capture key events when visible
        autoOrientation: true
    }


    Rectangle {
        id: button1
        objectName: "button1"
        anchors.top:vf.bottom
        width: parent.width
        height: 100
    }
}

【问题讨论】:

    标签: android c++ qt camera qml


    【解决方案1】:

    documentation for Camera 声明它派生自 QtObject,这意味着 childItems() 不会包含它,因为它不是可视类型。您需要改用QObject::children()

    Concepts - Visual Parent in Qt Quick 文档解释了所有这些是如何工作的:

    Qt Quick 中可视父级的概念与 QObject 父级层次结构中的对象父级概念是分开的,但与之相关。所有 QML 对象都有一个对象父对象,它由声明对象的对象层次结构决定。使用 QtQuick 模块时,Item 类型是该模块提供的所有可视项的基本类型,它提供了附加可视父项的概念,由项的 parent 属性定义。每个项目都有一个视觉父项;如果 item 的 parent 属性值为 null,则不会在场景中渲染该 item。

    分配给项目数据属性的任何对象都将成为其 QObject 层次结构中项目的子项,用于内存管理目的。此外,如果添加到 data 属性的对象是 Item 类型,它也被分配给 Item::children 属性,并成为视觉场景层次结构中项目的子项。 (大部分Qt Quick层级爬取算法,尤其是渲染算法,只考虑可视父层级。)

    如果您好奇,here 是 Qt 源代码中处理将子级添加到 Item 的点。

    【讨论】:

    • 感谢您提供的信息。 rootObject()->children() 也给了我 cam.. 仍然.. findChild("cam") 没有返回任何东西.. 出于同样的原因你提到我假设。将尝试一些特技来掌握它。有点困惑stackoverflow.com/questions/28041741/… 中的解决方案如何为某些人工作..(我完全理解您没有任何义务解释别人的答案.. 仍然会有一些关于此的信息赞赏。)
    • 啊.. 有问题了。我试图将 findChild("cam") 转换为 QQuickItem 而不是 QObject .. 您的链接让我深入了解了这个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2016-05-22
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多