首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使QML ListView不闪烁?

如何使QML ListView不闪烁?
EN

Stack Overflow用户
提问于 2016-12-30 15:12:18
回答 1查看 3.7K关注 0票数 1

我想知道ListView是否有任何方法可以像桌面控件一样运行,而不对鼠标拖动的滚动做出反应?

我知道interactive属性,但我仍然希望ListView对单击、鼠标轮、箭头键和有一个ScrollBar做出反应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-30 18:35:23

首先,将interactive设置为false将几乎不影响视图。

有一个keyNavigationEnabled属性此时似乎不起作用(这个关键的错误)。

因此,需要做一些额外的工作才能让它按您的意愿工作:

代码语言:javascript
运行
复制
  MouseArea {
    anchors.fill: ll
    onWheel: ll.flick(0, wheel.angleDelta.y * 5)
  }
  ListView {
    id: ll
    model: 50
    width: 50
    height: 200
    spacing: 5
    focus: true
    interactive: false
    boundsBehavior: Flickable.StopAtBounds
    Keys.onPressed: {
      if (event.key === Qt.Key_Up) flick(0, 500)
      else if (event.key === Qt.Key_Down) flick(0, -500)
    }
    delegate: Rectangle {
      width: 50
      height: 50
      color: "red"
      MouseArea {
        anchors.fill: parent
        onClicked: console.log("clicked")
      }
    }
  }

禁用交互性,手动实现密钥导航,并使用后台MouseArea捕获轮毂事件。请注意,您不需要做任何特殊的操作来启用非交互式视图的项目,无论视图是交互式的还是非交互式的,它都能工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41398425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档