2015-04-27 92 views
3

QCustomPlot имеет setData функция, которая принимает переменную const. Есть ли способ, чтобы QCustomPlot можно использовать для динамического отображения? QCustomPlotsetData функция принимает постоянные векторы, но мне нужно динамически изменять значения в этом векторе.Как использовать QCustomPlot в графике реального времени

const QVector<double> yval(cl); 
const QVector<int> xval(cl); 


for (int j = 0; j<cl; j++) 
    yval[j] = ui->tableView->model()->data(ui->tableView->model()->index(5, j)).toDouble(); 
for (int j = 0; j<cl; j++) 
{ 
    xval[j] = j; 
} 
ui->widget->graph()->setData(xval, yval); 
+0

Вы можете назвать 'SetData' каждый раз, когда ваши данные изменились. –

+0

Я исправил отступ кода и закончил ваш вопрос с помощью? – NathanOliver

ответ

0

setData() Вы звоните с новыми данными, то customPlot()->replot()

Я использую его в течение 50мс таймера, и она работает очень хорошо.

+0

Вышеприведенный код не работает, потому что функция setData() принимает setData (const double Vector key, const double Vector value); Я давал int vector values. и QT жаловался на то, что соответствующая функция не найдена и справедливо указывала – Schwab

0

Вы можете использовать QCPGraph::data(). Документация QCustomPlot гласит, что:

Возвращает указатель на внутреннее хранилище данных типа QCPDataMap. Вы можете использовать , чтобы напрямую манипулировать данными, которые могут быть более удобными и быстрыми, чем при использовании обычных методов setData или addData , в определенных ситуациях.

Вы можете управлять данными в QCustomPlot как:

for(int i=0; i<count; i++) 
    plot->graph()->data()[i] = y[i]; 
Смежные вопросы