Skip to content

Commit 1879c44

Browse files
committed
[feat] stat_analysis: add save plot
1 parent 5d93d4d commit 1879c44

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/statanalysis.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ StatAnalysis::StatAnalysis(QWidget* parent, bool isStandalone) : QMainWindow(par
3636
restoreState(settingsFile->value(QStringLiteral("windowState")).toByteArray());
3737

3838
QIcon img;
39-
img = QIcon(":/assets/buttons/openImage.png");
39+
img = QIcon(":/assets/buttons/openFile.png");
4040
QAction* openAction = new QAction(img, tr("&Open"), this);
4141
openAction->setShortcuts(QKeySequence::Open);
4242
openAction->setStatusTip(tr("Open tracking data"));
@@ -64,12 +64,28 @@ StatAnalysis::StatAnalysis(QWidget* parent, bool isStandalone) : QMainWindow(par
6464
QList<int> objects = trackingData->getId(0, trackingData->maxFrameIndex);
6565
initPlots(objects);
6666
emit ui->objectAll->clicked(true);
67-
scale->setText(QString("1px = %1m and 1 timestep = %2s").arg(QString::number(ruler), QString::number(timeScale)));
67+
scale->setText(QStringLiteral("1px = %1m and 1 timestep = %2s").arg(QString::number(ruler), QString::number(timeScale)));
6868
}
6969
}
7070
});
7171
ui->toolBar->addAction(optionAction);
7272

73+
img = QIcon(":/assets/buttons/save.png");
74+
QAction* saveAction = new QAction(img, tr("&Save"), this);
75+
saveAction->setShortcuts(QKeySequence::Open);
76+
saveAction->setStatusTip(tr("Save current graph"));
77+
connect(saveAction, &QAction::triggered, this, [this]() {
78+
QString file = QFileDialog::getSaveFileName(this, tr("Save current graph"), memoryDir, tr("Image (*.png)"));
79+
if (!file.isEmpty()) {
80+
QWidget* chartView = ui->tabPlot->currentWidget();
81+
QPixmap p(chartView->size());
82+
chartView->render(&p);
83+
p.save(file, "PNG");
84+
memoryDir = file;
85+
}
86+
});
87+
ui->toolBar->addAction(saveAction);
88+
7389
connect(ui->objectAll, &QPushButton::clicked, this, [this](bool state) {
7490
for (int i = 0; i < ui->objectList->rowCount(); i++) {
7591
QCheckBox* object = qobject_cast<QCheckBox*>(ui->objectList->cellWidget(i, 0));
@@ -221,7 +237,7 @@ void StatAnalysis::initPlots(const QList<int>& objects) {
221237
velocity.append(x);
222238
std::sort(x.begin(), x.end());
223239
QBoxPlotSeries* displacements = new QBoxPlotSeries();
224-
QBoxSet* set = new QBoxSet(" "); // " " Avoid number label on xaxis
240+
QBoxSet* set = new QBoxSet(QStringLiteral(" ")); // " " Avoid number label on xaxis
225241
set->setValue(QBoxSet::LowerExtreme, x.first() * ruler);
226242
set->setValue(QBoxSet::UpperExtreme, x.last() * ruler);
227243
set->setValue(QBoxSet::Median, median(0, x.size(), x) * ruler);

src/statanalysis.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ This file is part of Fast Track.
3636
#include <QList>
3737
#include <QMainWindow>
3838
#include <QObject>
39+
#include <QPixmap>
3940
#include <QSettings>
4041
#include <QString>
4142
#include <QTableWidgetItem>

0 commit comments

Comments
 (0)