2017-03-17 64 views
0

我是Qt/QML编程的新手,并试图让以下示例在移动设备上正常运行。当我尝试“向右滑动”,然后点击删除按钮时,“Listview-item”不会被删除。在桌面上一切正常,但在移动设备上无法正常工作。任何人都可以帮我解决我的问题吗?Qt/QML SwipeDelegate在移动设备(Android,iOS)上无法正常工作

import QtQuick 2.7 
import QtQuick.Controls 2.0 

ApplicationWindow { 
    id: appWindow 
    visible: true 

    ListView { 
     id: listView 
     anchors.fill: parent 
     model: ListModel { 
      ListElement { name: "Swipe Delegate - Test 1" } 
      ListElement { name: "Swipe Delegate - Test 2" } 
      ListElement { name: "Swipe Delegate - Test 3" } 
      ListElement { name: "Swipe Delegate - Test 4" } 
     } 
     delegate: SwipeDelegate { 
      id: swipeDelegate 
      text: model.name 
      width: parent.width 

      ListView.onRemove: SequentialAnimation { 
       PropertyAction { 
        target: swipeDelegate 
        property: "ListView.delayRemove" 
        value: true 
       } 
       NumberAnimation { 
        target: swipeDelegate 
        property: "height" 
        to: 0 
        easing.type: Easing.InOutQuad 
       } 
       PropertyAction { 
        target: swipeDelegate; 
        property: "ListView.delayRemove"; 
        value: false 
       } 
      } 

      swipe.right: Label { 
       id: deleteLabel 
       text: qsTr("Delete") 
       color: "white" 
       verticalAlignment: Label.AlignVCenter 
       padding: 12 
       height: parent.height 
       anchors.right: parent.right 

       SwipeDelegate.onClicked: listView.model.remove(index) 

       background: Rectangle { 
        color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" 
       } 
      } 
     } 
    } 
} 

回答

0

您可以在矩形内添加带有onClicked事件的MouseArea。这里是例子:

background: Rectangle { 
       color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" 
       MouseArea { 
        anchors.fill: parent 
        onClicked: listView.model.remove(index) 
       } 
} 
+0

谢谢你,它工作得很好 –

相关问题