在另一个鼠标区域QML/QT下使用滑块
我正在Qt中设计一个UI界面,其中一个页面可以在视图之间滑动。我已经在整个屏幕中定义了一个在另一个鼠标区域QML/QT下使用滑块,qml,qt5,qtquick2,Qml,Qt5,Qtquick2,我正在Qt中设计一个UI界面,其中一个页面可以在视图之间滑动。我已经在整个屏幕中定义了一个SwipeArea区域(这是我在另一个QML文件中定义的MouseArea),以便能够在页面之间滑动,属性propagateComposedEvents设置为true,这样我就可以在页面之间滑动,并且仍然能够单击所有按钮 使用滑块时会出现问题。显然,它无法获取这些鼠标事件,我也无法与之交互,因为当我单击屏幕时,它会启动滑动处理程序。你知道我该怎么解决这个问题吗 这是我定义SwipeArea.qml代码的地方
SwipeArea
区域(这是我在另一个QML文件中定义的MouseArea
),以便能够在页面之间滑动,属性propagateComposedEvents
设置为true
,这样我就可以在页面之间滑动,并且仍然能够单击所有按钮
使用滑块时会出现问题。显然,它无法获取这些鼠标事件,我也无法与之交互,因为当我单击屏幕时,它会启动滑动处理程序。你知道我该怎么解决这个问题吗
这是我定义SwipeArea.qml
代码的地方:
import QtQuick 2.0
MouseArea {
property point origin
property bool ready: false
signal move(int x, int y)
signal swipe(string direction)
propagateComposedEvents: true
onPressed: {
drag.axis = Drag.XAndYAxis
origin = Qt.point(mouse.x, mouse.y)
}
onPositionChanged: {
switch (drag.axis) {
case Drag.XAndYAxis:
if (Math.abs(mouse.x - origin.x) > 16) {
drag.axis = Drag.XAxis
}
else if (Math.abs(mouse.y - origin.y) > 16) {
drag.axis = Drag.YAxis
}
break
case Drag.XAxis:
move(mouse.x - origin.x, 0)
break
case Drag.YAxis:
move(0, mouse.y - origin.y)
break
}
}
onReleased: {
switch (drag.axis) {
case Drag.XAndYAxis:
canceled(mouse)
break
case Drag.XAxis:
swipe(mouse.x - origin.x < 0 ? "left" : "right")
break
case Drag.YAxis:
swipe(mouse.y - origin.y < 0 ? "up" : "down")
break
}
}
}
可能需要添加的重要信息是,我的滑块代码:
Slider {
id: slider
anchors.centerIn: parent
updateValueWhileDragging:true
activeFocusOnPress:true
style: SliderStyle {
id:sliderStyle
//Slider handler
handle: Rectangle {
id:handler
width: 22
height: 44
radius:2
antialiasing: true
Image{
source:"icons/slidercenter.png"
anchors.centerIn: parent
}
}
//Slider Groove
groove: Item {
id:slidergroove
implicitHeight: 50
implicitWidth: temperaturePage.width -50
}
}
}
我感谢任何帮助或意见,并提前感谢您 你能解决这个问题吗?
Slider {
id: slider
anchors.centerIn: parent
updateValueWhileDragging:true
activeFocusOnPress:true
style: SliderStyle {
id:sliderStyle
//Slider handler
handle: Rectangle {
id:handler
width: 22
height: 44
radius:2
antialiasing: true
Image{
source:"icons/slidercenter.png"
anchors.centerIn: parent
}
}
//Slider Groove
groove: Item {
id:slidergroove
implicitHeight: 50
implicitWidth: temperaturePage.width -50
}
}
}