-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHistogramWidget.cpp
More file actions
65 lines (51 loc) · 1.87 KB
/
HistogramWidget.cpp
File metadata and controls
65 lines (51 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "HistogramWidget.h"
#include <iostream>
HistogramWidget::HistogramWidget(const std::vector<double> data, QWidget* parent = nullptr, QString chart_tile = "Histogram") : QWidget(parent) {
// Cria o conjunto de barras e adiciona os dados
QVector<double> q_data;
for(double d: data){
q_data.push_back(d);
}
QBarSet *set = new QBarSet("Values");
for (int i = 0 ; i < q_data.size(); i++){
*set << q_data[i];
if(i % 2 == 0)
set->setColor(QColor(255, 0, 0));
else
set->setColor(QColor(0, 0, 255));
}
for(int i = 0; i < q_data.size(); i++){
set->replace(i, set->at(i));
}
// Cria a série de barras e adiciona o conjunto de dados
QBarSeries *series = new QBarSeries();
series->append(set);
series->setBarWidth(1);
// Cria o gráfico e adiciona a série de barras
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle(chart_tile);
// Configuração do eixo Y (valores)
QValueAxis *axisY = new QValueAxis();
axisY->setTitleText("Valores");
axisY->setTickCount(8);
axisY->setRange(0, *std::max_element(q_data.begin(), q_data.end()));
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
// Configuração do eixo X (índices)
QValueAxis *axisX = new QValueAxis();
axisX->setRange(0, 255);
axisX->setTitleText("Índices");
axisX->setTickCount(18);
axisX->setTickInterval(16);
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
// Configuração da visualização do gráfico
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
// Configura o layout do widget e adiciona o gráfico
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(chartView);
setLayout(layout);
chartView->show();
}