在QwtPlot 6.1.3中发布更新曲线

时间:2015-09-14 14:58:00

标签: c++ qt qwt qt4.8

我目前正在使用gcc 4.9.2和Qwt 6.1.3开发Ubuntu 14.04;我已经安装了两个 Qt 4.8.6和Qt 5.2.1(我想知道这是否与我遇到的问题有关)。

我有一个简单的GUI,附带QwtPlot和QwtPlotCurve,我正在尝试更新和重绘。在setupUi()函数中,我创建了一些随机数据点,然后绘制它们:

void ExampleMainWindow::setupUi(QMainWindow* mainWindow)
{
    // run the inherited setupUi
    Ui_MainWindow::setupUi(mainWindow);

    // associate internal pointer to main window
    this->mainWindow = mainWindow;

    // create some data points
    for(unsigned int i = 0; i < 10; i++)
    {
            this->createDataPoint();
    }

    for(unsigned int i = 0; i < this->xPlot.size(); i++)
    {
            cout << "Point #" << i << ": x=" << xPlot[i] << "; y=" << yPlot[i] << endl;
    }
    this->updateGraph();

    // also, connect stuff
    connect( this->pushButton, SIGNAL(clicked()), this, SLOT(synchronous()) );

    return;
}

现在,这部分工作正常。结果是这样的:

enter image description here

稍后,我将pushButton连接到一个方法,该方法应该向曲线添加10个点并重新绘制它。相关方法是:

void ExampleMainWindow::synchronous()
{
    cout << "Creating 10 new data points..." << endl;
    for(unsigned int i = 0; i < 10; i++) this->createDataPoint();
    cout << "xPlot.size() = " << xPlot.size() << " ; yPlot.size() = " << yPlot.size() << endl;
    this->updateGraph();

    return;
}

void ExampleMainWindow::updateGraph()
{
    // detach everything?
    this->qwtPlot->detachItems();

    // create a new curve
    QwtPlotCurve* curve = new QwtPlotCurve("curve 1");
    curve->setSamples( QVector<double>::fromStdVector( xPlot ), QVector<double>::fromStdVector( yPlot ) );
    curve->attach( this->qwtPlot );
    this->qwtPlot->replot();
    //this->qwtPlot->show();

    return;
}

现在,问题是在GUI上按下pushButton并不会在视觉上改变QwtPlot中的任何内容。我确定单击pushButton时程序会进入synchronous。所以,函数updateGraph可能有问题,但我遗漏了一些东西,因为我找不到问题。

当我编译项目时,我使用Qt 4.8.6,

qmake-qt4
make

我没有编译错误。我的Qt项目文件是:

TEMPLATE = app                                                         
TARGET = example
QT += widgets  
CONFIG += qwt
QMAKE_CXXFLAGS += -std=c++11
DEPENDPATH +=   ../. \                                                 
            # for Qwt                                              
            /usr/local/qwt-6.1.3-svn/lib \
            /usr/local/qwt-6.1.3-svn/include
            # end for Qwt
INCLUDEPATH +=  ../. \
            # for Qwt
            /usr/local/qwt-6.1.3-svn/include
            # end for Qwt
LIBS +=         -lqwt \              
            -L/usr/local/qwt-6.1.3-svn/lib                         

# Input                                                                
FORMS +=        example.ui                                             
HEADERS =       ExampleMainWindow.h                                    
SOURCES =       ExampleMainWindow.cpp \                                
            main.cpp  

即使查看我在网上找到的示例,我也无法找到问题。你能救我吗?

预先感谢您的支持: - )

编辑:指出问题的短语被错误地删除了。

1 个答案:

答案 0 :(得分:0)

好的,经过多次试验和错误,我找到了一个解决方案:我通过Ubuntu的软件中心安装了Qwt(我猜6.0),并删除了所有其他Qwt版本(6.1.2和6.1.3)我手动安装了。现在,小型GUI工作正常。

我猜错误是由于我在.pro文件中提供的路径中的某些问题,但我无法确定错误。不是一个令人满意的答案,但至少它是有效的。