【发布时间】:2018-04-06 08:21:09
【问题描述】:
我正在 QML 中创建一个绘图组件。我的 QML 组件的结构如下所示:
Rectangle {
id: canvas
objectName: "myPlot"
Rectangle {
id: plot
PlotArea {
id: pa
} // this is my c++ QQuickItem
MouseArea {} // for handling interaction with the plot, like zooming
XAxis{}
YAXis{}
}
}
PlotArea 是我的 c++ 类。我需要从 C++ 与这个 QML 组件进行交互,更准确地说,我需要调用 PlotArea 的成员函数来将数据添加到绘图中。通常的方法是使用findChild<QObject*>("objectName"),但是由于组件会被重用,我不能给出PlotArea和对象名称。
如果我有指向"myPlot" 的指针,我如何访问PlotArea?我试过了
QObject *plot = rootObjects.value(0)->findChild<QObject*>("plotObject");
PlotArea * myplot = (plot->findChild<PlotArea*>("pa"));
但这不起作用。但是,如果我这样做,上述方法是有效的
PlotArea {
id: pa
objectName: "pa"
} // this is my c++ QQuickItem
但我想知道这是否安全,因为在我的应用程序中会有多个 PlotAreas,并且它们都具有名称“pa”。
【问题讨论】: