v1.0.0-rc.81
This commit is contained in:
@@ -3,6 +3,10 @@
|
||||
|
||||
#include "JFJochSimpleChartView.h"
|
||||
|
||||
#include <QMenu>
|
||||
#include <QClipboard>
|
||||
#include <QApplication>
|
||||
|
||||
JFJochSimpleChartView::JFJochSimpleChartView(QWidget *parent)
|
||||
: QChartView(new QChart(), parent) {
|
||||
chart()->legend()->hide();
|
||||
@@ -11,12 +15,14 @@ JFJochSimpleChartView::JFJochSimpleChartView(QWidget *parent)
|
||||
//setRubberBand(QChartView::RubberBand::HorizontalRubberBand);
|
||||
}
|
||||
|
||||
void JFJochSimpleChartView::UpdateData(const std::vector<float> &q, const std::vector<float> &values) {
|
||||
void JFJochSimpleChartView::UpdateData(const std::vector<float> &in_x, const std::vector<float> &in_y) {
|
||||
x = in_x;
|
||||
y = in_y;
|
||||
chart()->removeAllSeries();
|
||||
if (!q.empty() && q.size() == values.size()) {
|
||||
if (!x.empty() && x.size() == y.size()) {
|
||||
series = new QLineSeries(this);
|
||||
for (int i = 0; i < q.size(); i++)
|
||||
series->append(q[i], values[i]);
|
||||
for (int i = 0; i < x.size(); i++)
|
||||
series->append(x[i], in_y[i]);
|
||||
chart()->addSeries(series);
|
||||
chart()->createDefaultAxes();
|
||||
}
|
||||
@@ -25,3 +31,23 @@ void JFJochSimpleChartView::UpdateData(const std::vector<float> &q, const std::v
|
||||
void JFJochSimpleChartView::ClearData() {
|
||||
chart()->removeAllSeries();
|
||||
}
|
||||
|
||||
void JFJochSimpleChartView::contextMenuEvent(QContextMenuEvent *event) {
|
||||
QMenu menu(this);
|
||||
QAction *copyXY = menu.addAction("Copy (x y) points");
|
||||
copyXY->setEnabled(!x.empty() && x.size() == y.size());
|
||||
|
||||
QAction *chosen = menu.exec(event->globalPos());
|
||||
if (chosen == copyXY) {
|
||||
QString out;
|
||||
out.reserve(static_cast<int>(x.size() * 16)); // rough prealloc
|
||||
for (size_t i = 0; i < x.size() && i < y.size(); ++i) {
|
||||
out.append(QString::number(x[i], 'g', 10));
|
||||
out.append(' ');
|
||||
out.append(QString::number(y[i], 'g', 10));
|
||||
if (i + 1 < x.size()) out.append('\n');
|
||||
}
|
||||
QClipboard *cb = QApplication::clipboard();
|
||||
cb->setText(out);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user