コード例 #1
2
ファイル: widget.cpp プロジェクト: KoN-Fantazia/czyBlog
void Widget::plotQtChart()
{
    QChart* chart = ui->qtChart->chart();
    if(!chart)
    {
        chart = new QChart();
        ui->qtChart->setChart(chart);
    }
    QValueAxis * axisX = qobject_cast<QValueAxis *>(chart->axisX());
    QValueAxis * axisY = qobject_cast<QValueAxis *>(chart->axisY());
    QLineSeries* line = NULL;
    if(chart->series().size()>0)
    {
        line = qobject_cast<QLineSeries*>(chart->series().at(0));
    }
    else
    {
        line = new QLineSeries;
    }
    line->setUseOpenGL(true);
    chart->addSeries(line);
    line->attachAxis(axisX);
    line->attachAxis(axisY);

    QVector<QPointF> points;
    for(int i=0;i<320000;++i)
    {
        points.append(QPointF(i,sin(i)));
    }
    line->replace(points);
}
コード例 #2
0
ファイル: main.cpp プロジェクト: KubaO/stackoverflown
int main(int argc, char *argv[]) {
   QApplication a(argc, argv);
   QWidget ui;
   QVBoxLayout layout(&ui);
   QChartView view1, view2;
   QLabel status;
   layout.addWidget(&view1);
   layout.addWidget(&view2);
   layout.addWidget(&status);
   layout.setMargin(4);

   QLineSeries series;
   series.replace(data());
   auto *chart = view1.chart();
   chart->addSeries(&series);
   view1.setRubberBand(QChartView::RectangleRubberBand);

   QLineSeries subSeries;
   subSeries.setPointsVisible(true);
   auto *subChart = view2.chart();
   subChart->addSeries(&subSeries);

   for (auto *chart : {view1.chart(), view2.chart()}) {
      chart->legend()->hide();
      chart->createDefaultAxes();
      chart->layout()->setContentsMargins(0, 0, 0, 0);
   }

   auto update = [&] {
      auto rect = seriesRect(chart, &series);
      auto const points = pointsInRect(&series, rect);

      status.setText(QStringLiteral("Visible Range: (%1,%2)-(%3,%4)")
                         .arg(rect.left())
                         .arg(rect.top())
                         .arg(rect.right())
                         .arg(rect.bottom()));

      subSeries.replace(points);
      subChart->axisX(&subSeries)->setRange(rect.left(), rect.right());
      subChart->axisY(&subSeries)->setRange(rect.top(), rect.bottom());
   };
   QObject::connect(chart, &QChart::plotAreaChanged, update);
   ui.setMinimumSize(400, 400);
   ui.show();
   return a.exec();
}