Добавить модель к VXYModelMapper - PullRequest
       31

Добавить модель к VXYModelMapper

0 голосов
/ 02 декабря 2018

Я использую «VXYModelMapper» и «QStandardItemModel» в диаграмме.Я использую коды ударов, но добавление модели в VXYModelMapper выполняется очень медленно.

VXYModelMapper {
        model: myChartClass.newMyChartModel
        series: lineSeries
        xColumn: 0
        yColumn: 1
}
void MyChartClass::setMyChartModel(QStandardItemModel *model)
{
  newMyChartModel= model;
  emit myChartModelChanged(model);
}

QStandardItemModel* lineModel=new QStandardItemModel(npcArray.size(), 2);
foreach(const QJsonValue & val, npcArray){
    double xVal=val.toObject().value("x").toDouble();
    double yVal=val.toObject().value("y").toDouble();

    QStandardItem *item1 = new QStandardItem(QString::number(xVal));
    lineModel->setItem(i, 0, item1);

    QStandardItem *item2 = new QStandardItem(QString::number(yVal));
    lineModel->setItem(i, 1, item2);
     i+=1;
}

 //To this line everything is very good and fast   

QElapsedTimer timer;
timer.start();
myChartClass->setMyChartModel(lineModel);
qDebug() << "The slow operation took" << timer.elapsed() << "millisecond";

Вывод: Медленная операция заняла 123045 миллисекунду.Общее количество очков: 5188

Это очень медленно: (

Обновление : я использую QTimer, но не получаю пользу.: (

lineModel=new QStandardItemModel(0, 2);
myChartClass->setMyChartModel(lineModel);
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(30);


void MyChartClass::update(){

int toIndex=fromIndex+100;
if(toIndex>=npcArray.size()){
    toIndex=npcArray.size()-1;
}

for(int i=fromIndex;i<toIndex;i++){
    double xVal=npcArray[i].toObject().value("x").toDouble();
    double yVal=npcArray[i].toObject().value("y").toDouble();

    QStandardItem *item1 = new QStandardItem(QString::number(xVal));
    lineModel->setItem(i, 0, item1);

    QStandardItem *item2 = new QStandardItem(QString::number(yVal));
    lineModel->setItem(i, 1, item2);
}
fromIndex=toIndex;
}
...