我需要用 LineSeries 填充 QML ChartView。我通过调用 c++ 中的方法来做到这一点:
QMetaObject::invokeMethod(m_chartview, "createSeries", Qt::DirectConnection,
Q_RETURN_ARG(QAbstractSeries *, serie),
Q_ARG(int, type),
Q_ARG(QString, ("Chart "+QString::number(index+1))),
Q_ARG(QAbstractAxis *, axis_x),
Q_ARG(QAbstractAxis *, axis_y));
然后将点附加到创建的系列:
if(QLineSeries *line_serie = qobject_cast<QLineSeries *>(serie)){
static std::default_random_engine e;
static std::uniform_real_distribution<> dis(0, 3);
for(int i=0; i < 10; i++){
line_serie->append(i, dis(e));
}
}
它适用于少量数据,但处理大量数据时速度极慢。问题是每个“附加”都会触发重绘。所以我的问题是:只有在 ChartView 填充了点之后,有没有办法将 serie 添加到 ChartView 中?