Upload
tadeu-ficagna
View
2
Download
0
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
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: