LINUX.ORG.RU

Мы читать не умеем, да? Написано же человеческим языком, что надо создам QApplication до того, как создавать виджеты.

krum
()
Ответ на: комментарий от krum

>Мы читать не умеем, да? Написано же человеческим языком, что надо создам QApplication до того, как создавать виджеты.

В том то и дело, что после. Вечером код выложу.

eldubalof
() автор топика
Ответ на: комментарий от eldubalof

#include <Qapplication.h> #include <Qwt/qwt_plot.h> #include <Qwt/qwt_plot_curve.h>

int main(int argc, char **argv) { QApplication a(argc, argv); QwtPlot *myPlot; double x[100], y1[100], y2[100]; // x and y values

myPlot = new QwtPlot(new QWidget());

// add curves QwtPlotCurve *curve1 = new QwtPlotCurve("Curve 1"); QwtPlotCurve *curve2 = new QwtPlotCurve("Curve 2");

//getSomeValues(x, y1, y2);

// copy the data into the curves curve1->setData(x, y1, 100); curve2->setData(x, y2, 100);

curve1->attach(myPlot); curve2->attach(myPlot);

// finally, refresh the plot myPlot->replot(); return a.exec(); }

eldubalof
() автор топика
Ответ на: комментарий от eldubalof

Документацию я так понял читать не модно нынче?
Все работает у меня:

#include <qapplication.h>
#include <qwt_plot.h>
#include <qwt_plot_canvas.h>
#include <math.h>

void
getSomeValues (double *x, double *y1, double *y2)
{
  for (int i = 0; i < 100; i++)
    {
      x[i] = double (i);
      y1[i] = sqrt (x[i]);
      y2[i] = cos (x[i]);
    }
}

int
main (int argc, char **argv)
{
  QApplication a (argc, argv);

  double x[100], y1[100], y2[100];	// x and y values

  QwtPlot *myPlot = new QwtPlot ();

// add curves 
  QwtPlotCurve *curve1 = new QwtPlotCurve (myPlot, "Curve 1");
  QwtPlotCurve *curve2 = new QwtPlotCurve (myPlot, "Curve 2");

  getSomeValues (x, y1, y2);

// copy the data into the curves 
  curve1->setData (x, y1, 100);
  curve2->setData (x, y2, 100);

  myPlot->insertCurve (curve1);
  myPlot->insertCurve (curve2);

  a.setMainWidget (myPlot);
  myPlot->show ();

// finally, refresh the plot 
  myPlot->replot ();
  return a.exec ();
}

imp ★★
()
Ответ на: комментарий от eldubalof

А вот на Qt 4.2 без всяких qwt

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QPainter>
#include <QPainterPath>
#include <QGraphicsPathItem>

#include <math.h>

void
getSomeValues (double *x, double *y1, double *y2)
{
  for (int i = 0; i < 100; i++)
    {
      x[i] = double (i);
      y1[i] = sqrt (x[i]);
      y2[i] = sin (x[i]);
    }
}

QPainterPath *
getPath (double *x, double *y, int points = 100)
{
  QPainterPath *path = new QPainterPath (QPointF (x[0], -y[0]));
  for (int i = 1; i < points; i++)
    {
      path->lineTo (x[i], -y[i]);
    }
  return path;
}

int
main (int argc, char *argv[])
{
  QApplication app (argc, argv);

  double x[100], y1[100], y2[100];
  getSomeValues (x, y1, y2);

  QPainterPath *p1 = getPath (x, y1);
  QPainterPath *p2 = getPath (x, y2);

  QGraphicsScene scene;
  QGraphicsPathItem curve1 (*p1);
  QGraphicsPathItem curve2 (*p2);

  scene.addItem (&curve1);
  scene.addItem (&curve2);

  QPen pen1 (Qt::red);
  QPen pen2 (Qt::blue);

  pen1.setWidthF (0.5);
  pen2.setWidthF (0.5);

  curve1.setPen (pen1);
  curve2.setPen (pen2);

  QGraphicsView view (&scene);
  view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
  view.scale (4, 4);
  view.show ();

  return app.exec ();
}

imp ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.