• 5301阅读
  • 0回复

qwt中QwtPlotCurve 调用setData时出错,, [复制链接]

上一主题 下一主题
离线seaweed
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-12
我最近在弄qwt通过读取文件话曲线的界面,但是在调用QwtPlotCurve 调用setData中时确老是发生错误,请各位高手能帮一下忙
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QtGui>
  4. #include <qwt_plot_curve.h>
  5. #include <QVector>
  6. namespace Ui {
  7.     class MainWindow;
  8. }
  9. class MainWindow : public QMainWindow
  10. {
  11.     Q_OBJECT
  12. public:
  13.     explicit MainWindow(QWidget *parent = 0);
  14.     ~MainWindow();
  15.     void file(QIODevice *fileDevice);
  16. private:
  17.     Ui::MainWindow *ui;
  18.     QwtPlotCurve *  curve;
  19.     QVector<double> xData;
  20.     QVector<double> yData;
  21. };
  22. #endif // MAINWINDOW_H
这是mainwindow.cpp
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QFile>
  4. #include <QStringList>
  5. #include <QtCore>
  6. #include <QString>
  7. #include <QTextStream>
  8. #include <cstdio>
  9. #include <QtGlobal>
  10. #include <qwt_data.h>
  11. MainWindow::MainWindow(QWidget *parent) :
  12.     QMainWindow(parent),
  13.     ui(new Ui::MainWindow)
  14. {
  15.     QFile infile;
  16.     infile.setFileName(":/testplot.txt");
  17.     infile.open(QFile::ReadOnly);
  18.     ui->setupUi(this);
  19.     ui->qwtPlot->setCanvasBackground(Qt::white);
  20.     ui->qwtPlot->setAxisScale(QwtPlot::xBottom,0,24.0);
  21.     ui->qwtPlot->setAxisScale(QwtPlot::yLeft,0,50);
  22.     if( !curve ){
  23.         qDebug() << "Creating curve";
  24.         curve = new QwtPlotCurve();
  25.         curve->attach(ui->qwtPlot);
  26.         QColor c = Qt::red;
  27.         c.setAlpha(150);
  28.         curve->setPen(c);
  29.     }
  30.     QTextStream file(&infile);
  31.     while(!file.atEnd())
  32.     {
  33.         QString line = file.readLine();
  34.         QStringList fields = line.split(' ');
  35.         if(fields.size()>=1)
  36.         {
  37.             QString xdata = fields.takeFirst();
  38.              QString ydata = fields.takeFirst();
  39.              xData.append((double)xdata.toDouble());
  40.               yData.append((double)ydata.toDouble());
  41.            //  int i= xData.size();
  42.         }
  43.     }
  44.     curve->setData(&xData[0],&yData[0],xData.size());//&xData[0],&yData[0])  //调试时就是到这里出现错误
  45.    ui->qwtPlot->replot();
  46. }
  47. MainWindow::~MainWindow()
  48. {
  49.     delete ui;
  50.     if( curve )
  51.         delete curve;
  52. }



快速回复
限100 字节
 
上一个 下一个