代码之家  ›  专栏  ›  技术社区  ›  Kenn Sebesta

如何确定QML组件当前是否在屏幕上可见

  •  0
  • Kenn Sebesta  · 技术社区  · 3 年前

    我有一组控件,它们绑定到频繁更改的数据值。数据来自有限的硬件总线。因此,当控件在屏幕上不可见时,最好禁用绑定。项目的 visible -属性在这种情况下没有帮助。那么,如何确定基于项目的QML小部件当前是否在屏幕上可见(并且没有被覆盖物隐藏或当前在可见区域之外)?

    来源: https://forum.qt.io/topic/54116/how-to-check-if-a-item-is-currently-visible-on-screen

    我几乎也有同样的问题。希望这里有人能找到解决方案。

    0 回复  |  直到 3 年前
        1
  •  0
  •   David K. Hess    3 年前

    以下是我要努力工作的内容:

    首先,我想这里有ScrollView或Flickable在玩?如果是,那么挂接Flickable::movementEnded()等信号。

    其次,当该信号触发时,使用Item::mapToItem()检查Item的每个可见矩形(基于x、y、宽度和高度)是否与窗口的contentItem矩形相交。将每个项的结果设置为布尔值,并确保在数据检索为false时禁用数据检索(使用&&或第三级JS表达式)。

    或者,如果更方便的话,当为false时删除绑定,当为true时使用Qt.binding()重新应用它。