我有这样的事情导致我的程序崩溃

void BackEnd::updateChart(QtCharts::QChartView *view)
{
    QList<QObject*> children = view->children();
}


在QML方面:

backend.updateChart(chartView);


其中“后端”是QT对象“后端”的实例,而“ chartView”是QML类型“ ChartView”的实例

我尝试在BackEnd构造函数上运行以下命令,但这无济于事

qRegisterMetaType<QtCharts::QChartView*>();

最佳答案

ChartView不是QChartViewChartViewDeclarativeChart,它是处理QChartView相同数据的私有api的QQuickItem,但不是QChartView。因此解决方案是将QtCharts::QChartView更改为QQuickItemQObject

void BackEnd::updateChart(QQuickItem /*or QObject*/ *view)
{
    QList<QObject*> children = view->children();
}


如果使用qDebug()打印视图,则会得到:

QtCharts::DeclarativeChart(0xfoo_address, parent=0x0, geometry=0,0 400x300)

09-12 02:35