update chart window less frequently than updating data. interval set in preferences

This commit is contained in:
Axel Kohlmeyer
2024-08-16 23:01:47 -04:00
parent 6f7a48fa7a
commit a3990ad73f
3 changed files with 28 additions and 11 deletions

View File

@ -33,6 +33,7 @@
#include <QSettings>
#include <QSpacerItem>
#include <QTextStream>
#include <QTime>
#include <QVBoxLayout>
#include <QValueAxis>
#include <QVariant>
@ -337,18 +338,26 @@ ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) :
setRenderHint(QPainter::Antialiasing);
setChart(chart);
setRubberBand(QChartView::RectangleRubberBand);
last_update = QTime::currentTime();
}
/* -------------------------------------------------------------------- */
void ChartViewer::add_data(int step, double data)
{
QSettings settings;
auto updchart = settings.value("updchart", "500").toInt();
if (last_step < step) {
last_step = step;
series->append(step, data);
if (last_update.msecsTo(QTime::currentTime()) > updchart) {
last_update = QTime::currentTime();
reset_zoom();
}
}
}
/* -------------------------------------------------------------------- */

View File

@ -18,6 +18,7 @@
#include <QList>
#include <QString>
#include <QWidget>
#include <QTime>
class QAction;
class QCloseEvent;
@ -100,6 +101,7 @@ private:
QLineSeries *series;
QValueAxis *xaxis;
QValueAxis *yaxis;
QTime last_update;
};
} // namespace QtCharts
#endif

View File

@ -250,26 +250,33 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa
connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath);
#endif
auto *fontlayout = new QHBoxLayout;
auto *gridlayout = new QGridLayout;
auto *getallfont =
new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Default Font...");
auto *gettextfont =
new QPushButton(QIcon(":/icons/preferences-desktop-font.png"), "Select Text Font...");
fontlayout->addWidget(getallfont);
fontlayout->addWidget(gettextfont);
gridlayout->addWidget(getallfont, 0, 0);
gridlayout->addWidget(gettextfont, 0, 1);
connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont);
connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont);
auto *freqlayout = new QHBoxLayout;
auto *freqlabel = new QLabel("GUI update interval (ms)");
auto *freqlabel = new QLabel("Data update interval (ms)");
auto *freqval = new QSpinBox;
freqval->setRange(1, 1000);
freqval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType);
freqval->setValue(settings->value("updfreq", "10").toInt());
freqval->setObjectName("updfreq");
freqlayout->addWidget(freqlabel);
freqlayout->addWidget(freqval);
freqlayout->addStretch(1);
gridlayout->addWidget(freqlabel, 1, 0);
gridlayout->addWidget(freqval, 1, 1);
auto *chartlabel = new QLabel("Charts update interval (ms)");
auto *chartval = new QSpinBox;
chartval->setRange(1, 5000);
chartval->setStepType(QAbstractSpinBox::AdaptiveDecimalStepType);
chartval->setValue(settings->value("updchart", "500").toInt());
chartval->setObjectName("updchart");
gridlayout->addWidget(chartlabel, 2, 0);
gridlayout->addWidget(chartval, 2, 1);
layout->addWidget(echo);
layout->addWidget(cite);
@ -283,8 +290,7 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa
layout->addWidget(pluginlabel);
layout->addLayout(pluginlayout);
#endif
layout->addLayout(fontlayout);
layout->addLayout(freqlayout);
layout->addLayout(gridlayout);
layout->addStretch(1);
setLayout(layout);
}