0

我需要用 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 中?

4

0 回答 0