【问题标题】:QML, ScrollView and touch events on desktop桌面上的 QML、ScrollView 和触摸事件
【发布时间】:2018-04-06 10:29:29
【问题描述】:

几个月以来,我们可以直接在 ListView item 中使用 ScrollBar.vertical: ScrollBar {} 来提供合适的滚动条。不幸的是,它对我来说不是本机行为,所以我决定用 ScrollView 包围项目中的每个 ListView,现在它可以正常工作,除了一件事:

import QtQuick 2.9
import QtQuick.Controls 2.2
//import QtQuick.Controls 1.4

ApplicationWindow {
  visible: true
  width: 640
  height: 480
  title: qsTr("Scroll")

  ScrollView {
    anchors.fill: parent

    ListView {
      anchors.fill: parent
      model: 20

      delegate: Text {
        text: "Item " + (index + 1)
        height: 50
        width: parent.width
      }
    }
  }
}

在上面的示例中,我不能使用触摸事件来滚动视图。我正在使用 Windows 10,如果我使用来自 QtQuick.Controls 1.4 或 QtQuick.Controls 2.2 的 ScrollView 都没关系如果我按住鼠标按钮,视图不会像它一样跟随鼠标移动仅在 ListView 的情况下。

对于这种处理滚动条的特殊方法,有什么方法可以恢复这种行为?

【问题讨论】:

  • ListView 上的anchors.fill: parent 在这里是个坏主意。我发现这会导致你的问题。

标签: qt qml


【解决方案1】:

使用Flickable { } 而不是ScrollView

* 编辑 *

Flickable {} 允许用户使用轻弹、拖动等触摸事件左右滚动。

它是为触摸屏设计的。您可以像使用 ScrollView {} 一样将其用作容器类。

Flickable {


  anchors.fill: parent

        ListView {
          anchors.fill: parent
          model: 20
    }
}

【讨论】:

  • 您可以在答案中添加更多详细信息或将此作为评论。
猜你喜欢
  • 2012-08-06
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多