Details
-
Bug
-
Resolution: Duplicate
-
Not Evaluated
-
5.5.1
-
None
-
1) OpenSUSE 42.1 x64
KDE Frameworks 5.16.0
QT 5.5.1
2) Android 5.1.1 armv7a
Description
Setting headerPositioning in ListView to PullBackHeader or OverlayHeader leading to program hang when deleting elements. Bug happened on Linux PC and mobile Android.
Tested with Qt example VIews/dynamicList(little modified it so it would be easy to multi-delete elements with mouse, added simple header element and set headerPositioning to PullBackHeader).
dynamiclist.qml
import QtQuick 2.5 import "content" // This example shows how items can be dynamically added to and removed from // a ListModel, and how these list modifications can be animated. Rectangle { id: container width: 500; height: 400 color: "#343434" // The model: ListModel { id: fruitModel ListElement { name: "Apple"; cost: 2.45 attributes: [ ListElement { description: "Core" }, ListElement { description: "Deciduous" } ] } ListElement { name: "Banana"; cost: 1.95 attributes: [ ListElement { description: "Tropical" }, ListElement { description: "Seedless" } ] } ListElement { name: "Cumquat"; cost: 3.25 attributes: [ ListElement { description: "Citrus" } ] } ListElement { name: "Durian"; cost: 9.95 attributes: [ ListElement { description: "Tropical" }, ListElement { description: "Smelly" } ] } } // The delegate for each fruit in the model: Component { id: listDelegate //! [0] Item { //! [0] id: delegateItem width: listView.width; height: 80 clip: true /*Column { id: arrows anchors { left: parent.left verticalCenter: parent.verticalCenter } Image { source: "content/pics/arrow-up.png" MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index-1, 1) } } Image { source: "content/pics/arrow-down.png" MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index+1, 1) } } } Column { anchors { left: arrows.right horizontalCenter: parent.horizontalCenter; bottom: parent.verticalCenter } Text { anchors.horizontalCenter: parent.horizontalCenter text: name font.pixelSize: 15 color: "white" } Row { anchors.horizontalCenter: parent.horizontalCenter spacing: 5 Repeater { model: attributes Text { text: description; color: "White" } } } } Item { anchors { left: arrows.right horizontalCenter: parent.horizontalCenter; top: parent.verticalCenter bottom: parent.bottom } */Row { anchors.centerIn: parent spacing: 10 height: parent.height//20 PressAndHoldButton { anchors.verticalCenter: parent.verticalCenter height: parent.height width: height source: "content/pics/plus-sign.png" onClicked: fruitModel.setProperty(index, "cost", cost + 0.25) } Text { id: costText anchors.verticalCenter: parent.verticalCenter height: parent.height text: '$' + Number(cost).toFixed(2) font.pixelSize: 15 color: "white" font.bold: true } PressAndHoldButton { anchors.verticalCenter: parent.verticalCenter height: parent.height width: height source: "content/pics/minus-sign.png" onClicked: fruitModel.setProperty(index, "cost", Math.max(0,cost-0.25)) } Image { source: "content/pics/list-delete.png" height: parent.height width: height MouseArea { anchors.fill:parent; onClicked: fruitModel.remove(index) } } } /*}*/ // Animate adding and removing of items: //! [1] ListView.onAdd: SequentialAnimation { PropertyAction { target: delegateItem; property: "height"; value: 0 } NumberAnimation { target: delegateItem; property: "height"; to: 80; duration: 250; easing.type: Easing.InOutQuad } } ListView.onRemove: SequentialAnimation { PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: true } NumberAnimation { target: delegateItem; property: "height"; to: 0; duration: 1000; easing.type: Easing.InOutQuad } // Make sure delayRemove is set back to false so that the item can be destroyed PropertyAction { target: delegateItem; property: "ListView.delayRemove"; value: false } } } //! [1] } // Simple header to test bug Component { id: headerComponent Rectangle { id: header height: 80 width: listView.width color: "black" border.color: Qt.lighter(color) } } // The view: ListView { id: listView anchors { left: parent.left; top: parent.top; right: parent.right; bottom: buttons.top; margins: 20 } model: fruitModel delegate: listDelegate header: headerComponent headerPositioning: ListView.PullBackHeader } Row { id: buttons anchors { left: parent.left; bottom: parent.bottom; margins: 20 } spacing: 10 TextButton { text: "Add an item" onClicked: { fruitModel.append({ "name": "Pizza Margarita", "cost": 5.95, "attributes": [{"description": "Cheese"}, {"description": "Tomato"}] }) } } TextButton { text: "Remove all items" onClicked: fruitModel.clear() } } }
Attachments
Issue Links
- duplicates
-
QTBUG-50105 ListView.OverlayHeader Bug (Freezing UI)
- Closed