12
PROGRAMAÇÃO GRÁFICA 1 Prof. MSc. Karl Phillip Buhr Curso: 620 - Engenharia da Computação Componente Curricular: 20399 Créditos: 4 Fase: 7

pg1_aula14_linechart

Embed Size (px)

Citation preview

PROGRAMAÇÃO GRÁFICA 1

Prof. MSc. Karl Phillip Buhr

Curso: 620 - Engenharia da Computação

Componente Curricular: 20399

Créditos: 4

Fase: 7

Trabalho (parte 1)

Gráfico de Linha(LineChart)

Nesta parte do trabalho você deve implementar um novo widget chamado LineChart para apresentar um gráfico de linha:

Trabalho: Gráfico de Linha

Exemplo de utilização #1:QVector<QPoint> points;

points.push_back(QPoint(0, 6));

points.push_back(QPoint(2, 4));

points.push_back(QPoint(3, 8));

points.push_back(QPoint(7, 4));

points.push_back(QPoint(10, 5));

points.push_back(QPoint(11, 1));

points.push_back(QPoint(13, 3));

points.push_back(QPoint(17, 6));

points.push_back(QPoint(18, 3));

points.push_back(QPoint(20, 2));

QVector<QString> x_values;

x_values.push_back("0.0");

x_values.push_back("5.0");

x_values.push_back("10.0");

x_values.push_back("15.0");

x_values.push_back("20.0");

QVector<QString> y_values;

y_values.push_back("0.0");

y_values.push_back("2.0");

y_values.push_back("4.0");

y_values.push_back("6.0");

y_values.push_back("8.0");

LineChart* line_chart = new LineChart();

line_chart->addSeries(points, QColor(0x3366CC));

line_chart->setAxisX(x_values);

line_chart->setAxisY(y_values);

line_chart->setLabelX("Label X");

line_chart->setLabelY("Label Y");

line_chart->setTitle("Simple line chart example");

QMainWindow window;

window.setWindowTitle("Line Chart");

window.setCentralWidget(line_chart);

window.resize(600, 450);

window.show();

Exemplo de utilização #2:QVector<QPoint> points;

points.push_back(QPoint(1, 10));

points.push_back(QPoint(2, 39));

points.push_back(QPoint(3, 23));

points.push_back(QPoint(4, 31));

points.push_back(QPoint(5, 46));

points.push_back(QPoint(6, 29));

points.push_back(QPoint(7, 28));

points.push_back(QPoint(8, 31));

points.push_back(QPoint(9, 28));

points.push_back(QPoint(10, 71));

points.push_back(QPoint(11, 9));

points.push_back(QPoint(12, 17));

QVector<QPoint> points2;

points2.push_back(QPoint(1, 13));

points2.push_back(QPoint(2, 11));

points2.push_back(QPoint(3, 47));

points2.push_back(QPoint(4, 7));

points2.push_back(QPoint(5, 20));

points2.push_back(QPoint(6, 11));

points2.push_back(QPoint(7, 10));

points2.push_back(QPoint(8, 12));

points2.push_back(QPoint(9, 19));

points2.push_back(QPoint(10, 44));

points2.push_back(QPoint(11, 25));

points2.push_back(QPoint(12, 46));

QVector<QString> x_values;

x_values.push_back("1");

x_values.push_back("2");

x_values.push_back("3");

x_values.push_back("4");

x_values.push_back("5");

x_values.push_back("6");

x_values.push_back("7");

x_values.push_back("8");

x_values.push_back("9");

x_values.push_back("10");

x_values.push_back("11");

x_values.push_back("12");

QVector<QString> y_values;

y_values.push_back("0");

y_values.push_back("10");

y_values.push_back("20");

y_values.push_back("30");

y_values.push_back("40");

y_values.push_back("50");

y_values.push_back("60");

y_values.push_back("70");

y_values.push_back("80");

LineChart* line_chart = new LineChart();

line_chart->addSeries(points, QColor(0x3366CC));line_chart->addSeries(points2, QColor(0xCC6633));

line_chart->setAxisX(x_values);

line_chart->setAxisY(y_values);

line_chart->setLabelX("Meses do Ano");

line_chart->setLabelY("Chuva (mm)");

line_chart->setTitle("Histórico do Clima: Joaçaba vsFloripa");

QMainWindow window;

window.setWindowTitle("LineChart Demo");

window.setCentralWidget(line_chart);

window.resize(600, 450);

window.show();

Desta forma, a classe LineChart deve disponibilizar os seguintes métodos públicos:

Assinatura dos Métodos

void addSeries(QVector<QPoint> series, QColor color);

void setAxisX(QVector<QString> values);

void setAxisY(QVector<QString> values);

void setLabelX(QString name);

void setLabelY(QString name);

void setTitle(QString title);

Assinatura do Método

void addSeries(QVector<QPoint> series, QColor color);

Este método recebe um vetor de pontos (x,y) que especifica uma série de valores no gráfico formando uma linha. Este método pode ser chamado mais de uma vez para adicionar outras séries:

Assinatura do Método

void setAxisX(QVector<QString> values);

Este método recebe um vetor de strings que especificam os valores exibidos ao longo do eixo X:

Assinatura do Método

void setAxisY(QVector<QString> values);

Este método recebe um vetor de strings que especificam os valores exibidos ao longo do eixo Y:

Assinatura do Método

void setLabelX(QString name);

Este método recebe a string que é apresentada como rótulo do eixo X:

Assinatura do Método

void setLabelY(QString name);

Este método recebe a string que é apresentada como rótulo do eixo Y:

Assinatura do Método

void setTitle(QString title);

Este método recebe a string que é apresentada como título gráfico de linha: