如何在C ++中查找和使用QML子元素

时间:2017-12-14 16:58:28

标签: c++ qt qml qt4 qt5

我正在尝试创建一个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的完整资料来源

Source

0 个答案:

没有答案