Qt Quick QML Flickable 禁用轻弹并仅启用滚动

Posted

技术标签:

【中文标题】Qt Quick QML Flickable 禁用轻弹并仅启用滚动【英文标题】:Qt Quick QML Flickable disable flicking and enable only scrolling 【发布时间】:2020-06-02 09:05:52 【问题描述】:

我在一列中有两个Flickable,当用户滚动第二个 Flickable 时,我想垂直滚动第一个 Flickable。

Rectangle  
id: root
anchors.fill: parent

Flickable 
  id: first
  anchors.left: parent.left
  width: parent.width/2 
  height: parent.height

  // Rest of the Contents
  // I have also some TextFields and ComboBoxs here


Flickable 
  id: second
  anchors.left: first.right
  width: parent.width/2
  height: parent.height

  onFlickEnded: 
    first.contentY = second.contentY;
  

  // Rest of the Contents
  // I have also some TextFields and ComboBoxs here



我可以通过使用onFlickEnded 事件来做到这一点,这是正确的方法吗? 当用户单击并拖动并使用鼠标滚轮仅具有滚动效果时,如何禁用轻弹效果?

我是否应该改用 ScrollView,但我不能像使用 Flickable 那样滚动它。

【问题讨论】:

【参考方案1】:

使用 onFlickStarted 您可以立即在您想要禁用的 flickable 上调用 cancelFlick()。然后使用 onContentYChanged 处理它。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

将“interactive”设置为 false 应该禁用轻弹。

您可以使用“onContentYChanged”代替“onFlickEnded”。

【讨论】:

Adding interactive: false 使用鼠标拖动和滚轮使其不可滚动,我想要滚动但禁用轻弹。

以上是关于Qt Quick QML Flickable 禁用轻弹并仅启用滚动的主要内容,如果未能解决你的问题,请参考以下文章

qt-quick(qml) 应用程序无法订阅 ros 主题

✿4-The Basics-Qt Quick and QML

QT quick基础QML学习2

Qt Quick——QML基础:自定义控件

Qt Quick——新建一个QML

QML Qt quick工具栏的使用