Я пытаюсь получить ссылку на динамически созданный объект ChartView. В коде вы увидите, что я динамически создаю диаграмму в качестве делегата, когда нажимаю кнопку «добавить диаграмму».
import QtQuick 2.12
import QtQuick.Window 2.12
import QtCharts 2.3
import QtQuick.Controls 2.4
Window {
visible: true
width: 1200
height: 800
title: "Charts"
ListModel {
id: modelId
}
Rectangle {
id: rectId
color: "pink"
anchors.fill: parent
GridView {
id: mGridViewId
anchors.fill: parent
cellWidth: 300; cellHeight: 300
model: modelId
delegate: Rectangle {
width: mGridViewId.cellWidth;
height: mGridViewId.cellHeight
color: mColor
ChartView {
width: parent.width;
height: parent.height
LineSeries {
name: "LineSeries"
XYPoint { x: 0; y: 0 }
XYPoint { x: 1.1; y: 2.1 }
XYPoint { x: 1.9; y: 3.3 }
}
}
}
}
}
Column {
anchors.centerIn: parent
Row {
Button {
text: "add chart"
onClicked: {
modelId.append({'mColor': 'blue'})
}
}
Button {
text: "remove chart"
onClicked: {
modelId.remove(0)
}
}
}
Button {
anchors.horizontalCenter: parent.horizontalCenter
text: "add line series"
onClicked: {
var chart = modelId.get(0)
chart.removeAllSeries();
}
}
}
}
Я могу получить ссылку на конкретный элемент Модели, используя:
var chart = modelId.get(0)
Однако он не рассматривается ни как прямоугольник, ни как ChartView. Поэтому, если я хотел сделать что-то вроде добавления LineSeries в одну из динамически создаваемых диаграмм, или удалить LineSeries следующим образом:
onClicked: {
var chart = modelId.get(0)
chart.removeAllSeries();
}
Я не могу обработать объект как объект QML. Я получаю ошибку:
qrc: /main.qml: 80: TypeError: Свойство 'removeAllSeries' объекта
QObject (0x7fd35d996b50) не является функцией
Я не уверен, что я делаю это неправильно или мне нужно пойти по-другому, то есть не использовать ListView-Model-Delegate и вместо этого динамически создавать объект QML и сохранять ссылки на них в массиве .
Спасибо за любую помощь, я ценю это.
- E