首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qwt中QwtPlotCurve 调用setData时疏失

2013-03-13 
qwt中QwtPlotCurve 调用setData时出错,我最近在弄qwt通过读取文件话曲线的界面,但是在调用QwtPlotCurve 调

qwt中QwtPlotCurve 调用setData时出错,
我最近在弄qwt通过读取文件话曲线的界面,但是在调用QwtPlotCurve 调用setData中时确老是发生错误,请各位高手能帮一下忙


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui>
#include <qwt_plot_curve.h>
#include <QVector>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void file(QIODevice *fileDevice);
private:
    Ui::MainWindow *ui;
    QwtPlotCurve *  curve;
    QVector<double> xData;
    QVector<double> yData;
};

#endif // MAINWINDOW_H




下面是这是mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QStringList>
#include <QtCore>
#include <QString>
#include <QTextStream>
#include <cstdio>
#include <QtGlobal>
#include <qwt_data.h>


MainWindow::MainWindow(QWidget *parent) :
????QMainWindow(parent),
????ui(new Ui::MainWindow)
{
????QFile infile;
????infile.setFileName(":/testplot.txt");
????infile.open(QFile::ReadOnly);

????ui->setupUi(this);
????ui->qwtPlot->setCanvasBackground(Qt::white);
????ui->qwtPlot->setAxisScale(QwtPlot::xBottom,0,24.0);
????ui->qwtPlot->setAxisScale(QwtPlot::yLeft,0,50);
????if( !curve ){
????????qDebug() << "Creating curve";
????????curve = new QwtPlotCurve();
????????curve->attach(ui->qwtPlot);
????????QColor c = Qt::red;
????????c.setAlpha(150);
????????curve->setPen(c);
????}

????QTextStream file(&infile);
????while(!file.atEnd())
????{
????????QString line = file.readLine();
????????QStringList fields = line.split(' ');
????????if(fields.size()>=1)
????????{
????????????QString xdata = fields.takeFirst();
???????????? QString ydata = fields.takeFirst();
???????????? xData.append((double)xdata.toDouble());
??????????????yData.append((double)ydata.toDouble());
?????????? //??int i= xData.size();

????????}
????}

????curve->setData(&xData[0],&yData[0],xData.size());//&xData[0],&yData[0])??//调试时就是到这里出现错误
?? ui->qwtPlot->replot();
}



MainWindow::~MainWindow()
{
????delete ui;
????if( curve )
????????delete curve;
}



请各位高手帮帮忙~~~~急啊~~~
[解决办法]
改成setSamples
[解决办法]
楼上正解 setSamples(const QVector<QPointF> points);
[解决办法]
http://qwt.sourceforge.net/class_qwt_plot_curve.html

6.0之后就把setData 改为 setSamples

热点排行