从Qt 5.4.1升级到5.9.1后,以下代码在使用触摸屏时改变了行为:
import QtQuick 2.1
import QtQuick.Window 2.2
Window {
visible: true
width: flick.width + 2*grid.spacing
height: flick.height + 2*grid.spacing
property int rectHeight: 65
property int rectWidth: 100
Flickable {
id: flick
pressDelay: 100
contentWidth: grid.width
anchors {
top: parent.top
left: parent.left
leftMargin: grid.spacing
topMargin: grid.spacing
}
height: rectHeight * grid.rows + grid.spacing * (grid.rows-1)
width: rectWidth * (3 + 0.5) + grid.spacing * 3
Grid {
id: grid
rows: 6
columns: 12
spacing: 12
Repeater {
id: repeater
model: parent.rows * parent.columns
Rectangle {
color: "#3333FF"
width: rectWidth
height: rectHeight
MouseArea {
anchors.fill: parent
onPressed: console.log("onPressed")
onReleased:console.log("onReleased")
onClicked: console.log("onClicked")
}
}
}
}
}
}
以前使用Qt 5.4.1并使用鼠标或触摸屏单击它打印的矩形:
qml: onPressed
qml: onReleased
qml: onClicked
目前使用Qt 5.9.1并使用鼠标,单击矩形时仍然可以正常工作:
qml: onPressed
qml: onReleased
qml: onClicked
但是使用Qt 5.9.1并使用触摸屏单击一个矩形它只打印
qml: onPressed
使用触摸屏时,不确定为什么释放和点击的信号不再发出,但对于我的代码,我仍然需要将它们发出。
如果我改变
pressDelay: 0
然后mouseArea在点击时发出了所有3个信号,但这对我来说不是一个解决方案,因为这会导致在轻弹时从鼠标区域发出按下的信号。