我正在尝试创建一个QML对象,我可以添加任意数量的子进程,然后在C ++中对它们进行操作。我的代码有效,但我认为我有错误的方法,特别是因为它涉及文本搜索。
void Foo::componentComplete()
{
QObjectList children = this->children();
for (int i = 0; i < children.length(); i++)
{
if(QString(children[i]->metaObject()->className()).contains("MyClass"))
{
this->myChildList.append(static_cast<MyClass*>(children[i]));
}
}
}
可以在QML charts example中找到一个例子。
以下是代码中的一段摘录。即使PiceSlice子元素未分配给PieSeries元素的属性,它们也会被图表发现并显示。这是如何工作的?它只是使用this->children()
还是有更好的方法?
ChartView {
id: chart
title: "Top-5 car brand shares in Finland"
anchors.fill: parent
legend.alignment: Qt.AlignBottom
antialiasing: true
PieSeries {
id: pieSeries
PieSlice { label: "Volkswagen"; value: 13.5 }
PieSlice { label: "Toyota"; value: 10.9 }
PieSlice { label: "Ford"; value: 8.6 }
PieSlice { label: "Skoda"; value: 8.2 }
PieSlice { label: "Volvo"; value: 6.8 }
}
}
以下是Github的完整资料来源