QML Tumbler垂直移出鼠标后停止响应,如何解决?
问题解决:QT 6.2.1中Tumbler垂直移出组件停止响应的问题
问题分析
Tumbler组件的默认拖动逻辑中,鼠标垂直移出组件边界时会触发终止拖动的判定,但水平方向的移出判定逻辑宽松,因此左右移出甚至窗口外仍能正常操作。而Dial组件的拖动基于鼠标相对位移计算,不受方向限制,所以无此问题。这是QT 6.2.1版本中Tumbler的默认行为限制,并非遗漏基础设置。
解决方案
给Tumbler外层包裹MouseArea,强制捕获全局鼠标拖动事件,让Tumbler持续响应垂直移出后的操作:
import QtQuick 2.5 import QtQuick.Controls 2.5 Rectangle { width: 1000 height: 600 MouseArea { anchors.fill: parent hoverEnabled: true propagateComposedEvents: true Tumbler { anchors.centerIn: parent model: 24 width: 30 height: 100 // 允许MouseArea传递拖动事件给Tumbler onPressed: mouse.accepted = false onPositionChanged: mouse.accepted = false onReleased: mouse.accepted = false } } }
如果不想修改布局结构,也可以尝试升级到QT 6.3及以上版本,官方后续修复了这个Tumbler的拖动判定问题。
内容的提问来源于stack exchange,提问作者Marty Phi
相关产品推荐
相关产品推荐

