Qt 如何在应用程序窗口中跟踪项目的首次启动可见性

Qt 如何在应用程序窗口中跟踪项目的首次启动可见性,qt,qml,qtquick2,Qt,Qml,Qtquick2,我正在使用Qt5.9.3。我有这样一个QML: 如何跟踪项目第一次出现在应用程序窗口屏幕上的时间打开可视性更改 如何跟踪类似以下内容的MyQuickItem: // C++ definition class MyQuickItem : public QQuickitem { } // QML side MyQuickItem { id: some_id } 我猜完整的代码假设如下: ApplicationWindow{ visible: true onVisibility

我正在使用Qt5.9.3。我有这样一个QML:

如何跟踪项目第一次出现在应用程序窗口屏幕上的时间<代码>打开可视性更改

如何跟踪类似以下内容的
MyQuickItem

// C++ definition
class MyQuickItem : public QQuickitem {
}

// QML side
MyQuickItem {
  id: some_id
}

我猜完整的代码假设如下:

ApplicationWindow{
    visible: true
    onVisibilityChanged: {
        console.log("ApplicationWindow is ", visibility)
    }
    Component.onCompleted: {
        console.log("ApplicationWindow is onCompleted")
    }
    Item {
        id: root
        width : 400
        height: 700
        onVisibleChanged: {
            console.log("Item is ", visible)
        }
        Component.onCompleted: {
            console.log("Item is onCompleted")
        }
    }
}

显然,
ApplicationWindow
onVisibilityChanged
将在
visibility
属性更改时触发,因此在最小化并重新显示窗口时触发。正如您提到的第一次可见,因此我认为您正在寻找
组件。onCompleted

在这两种情况下,您都必须使用onVisibilityChanged。@eyllanesc:当项目被创建为可见时,这是否起作用?对于OP:第一项是否会“可见”,因为没有可见的内容。。。您如何定义“第一可见性”?完成绘制后,或绘制第一个像素后?@derM根据文档:此属性保存项目是否可见。默认情况下,这是真的。可以理解,当它引用项目时,它会谈论何时绘制所有像素。这将是一个检查默认情况下是否可见的问题,我将使用Component.OnCompleted在启动时验证可见性。@eyllansc:但它也是一个属性,用于控制项目是否可见。让我们取一个需要长时间绘制的项目,即当前不可见的(<代码>可见= false < /COD>)-现在我们设置<代码>可见=真/<代码> -它将立即为真,然后才开始绘制。我认为文档中的信息可能有误。
ApplicationWindow{
    visible: true
    onVisibilityChanged: {
        console.log("ApplicationWindow is ", visibility)
    }
    Component.onCompleted: {
        console.log("ApplicationWindow is onCompleted")
    }
    Item {
        id: root
        width : 400
        height: 700
        onVisibleChanged: {
            console.log("Item is ", visible)
        }
        Component.onCompleted: {
            console.log("Item is onCompleted")
        }
    }
}