Curso: 620 - Engenharia da Computao Componente Curricular: 20399 Crditos: 4 Fase: 7 Trabalho (parte 1) Grfico de Linha (LineChart) Nesta parte do trabalho voc deve implementar um novo widget chamado LineChart para apresentar um grfico de linha: Trabalho: Grfico de Linha Exemplo de utilizao #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"); QMainWindowwindow; window.setWindowTitle("Line Chart"); window.setCentralWidget(line_chart); window.resize(600, 450); window.show(); Exemplo de utilizao #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("Histrico do Clima: Joaaba vs Floripa"); QMainWindowwindow; window.setWindowTitle("LineChart Demo"); window.setCentralWidget(line_chart); window.resize(600, 450); window.show(); Desta forma, a classe LineChart deve disponibilizar os seguintes mtodos pblicos: Assinatura dos Mtodos 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 Mtodo void addSeries(QVector<QPoint> series, QColor color); Este mtodo recebe um vetor de pontos (x,y) que especifica uma srie de valores no grfico formando uma linha. Este mtodo pode ser chamado mais de uma vez para adicionar outras sries: Assinatura do Mtodo void setAxisX(QVector<QString> values); Este mtodo recebe um vetor de strings que especificam os valores exibidos ao longo do eixo X: Assinatura do Mtodo void setAxisY(QVector<QString> values); Este mtodo recebe um vetor de strings que especificam os valores exibidos ao longo do eixo Y: Assinatura do Mtodo void setLabelX(QString name); Este mtodo recebe a string que apresentada como rtulo do eixo X: Assinatura do Mtodo void setLabelY(QString name); Este mtodo recebe a string que apresentada como rtulo do eixo Y: Assinatura do Mtodo void setTitle(QString title); Este mtodo recebe a string que apresentada como ttulo grfico de linha: