Details
-
Task
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
5.15.16, 6.5.3
Description
Property categories of BarCategoryAxis is a QStringList which is a list of string on QML side. But it does recognize JavaScript array APIs that can delete elements, e.g. splice() and shift(). The only exception I found is pop() and splice() that only deletes the last element. Nevertheless, normal QML list accepts all the JavaScript APIs.
A reproducer with 5 cases I've tested:
ChartView { anchors.fill: parent BarCategoryAxis { id: categoryAxis categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun" ] property var myCategories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun" ] } BarSeries { axisX: categoryAxis BarSet { values: [1, 2, 3, 4, 5, 6] } } } Button { text: "Click me" onClicked: { // Case 1: splice(5,1), i.e.delete the last element, works // categoryAxis.categories.splice(5,1) // Case 2: pop() works // categoryAxis.categories.pop() // Case 3: splice(x,1) for any x except 5 does not work properly, that the behavior is expected but with error // categoryAxis.categories.splice(1,1) // case 4: shift() does not work, that somehow multiple elements get deleted and with error // categoryAxis.categories.shift() // Case 5: splice() and shift() work for "normal" list that I declared as proeprty, and categories accepts being reassigned as a whole // categoryAxis.myCategories.shift() // categoryAxis.myCategories.splice(0, 1) // categoryAxis.myCategories.push("Jul") // categoryAxis.myCategories.push("Aug") // categoryAxis.categories = categoryAxis.myCategories } }