Проблема обновления кривых в QwtPlot 6.1.3

В настоящее время я работаю над Ubuntu 14.04, используя gcc 4.9.2 и Qwt 6.1.3; Я установил оба Qt 4.8.6 и Qt 5.2.1 (и мне интересно, может ли это быть связано с проблемами, с которыми я сталкиваюсь).

У меня есть простой графический интерфейс с прикрепленным 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;
}

Теперь эта часть работает как надо. Результат примерно такой:

введите здесь описание изображения

Позже я подключил 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;
}

Теперь проблема в том, что нажатие кнопки в графическом интерфейсе визуально ничего не меняет в QwtPlot. Я уверен, что программа вводит 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  

Даже глядя на примеры, которые я нашел в Интернете, я не могу найти проблему. Вы можете помочь мне?

Заранее спасибо за вашу поддержку :-)

EDIT: Фраза, указывающая на проблему, была вырезана по ошибке.


person Alberto    schedule 14.09.2015    source источник
comment
Так в чем проблема? Я думаю, вы забыли упомянуть, что происходит/не происходит при нажатии на кнопку   -  person Bowdzone    schedule 15.09.2015
comment
Упс! :-/ Одна из фраз была вырезана. Вкратце, метод ‹code›updateGraph‹/code› не обновляет виджет QwtPlot. Я уверен, что программа правильно вводит метод ‹code›synchronous‹/code›, но визуально ничего не меняется при вызове ‹code›updateGraph‹/code›.   -  person Alberto    schedule 15.09.2015


Ответы (1)


Хорошо, после нескольких проб и ошибок я нашел решение: я установил Qwt (кажется, 6.0) через Центр программного обеспечения Ubuntu и удалил все остальные версии Qwt (6.1.2 и 6.1.3), которые я установил вручную. Теперь небольшой графический интерфейс работает правильно.

Я предполагаю, что ошибка возникла из-за какой-то проблемы с путями, которые я указал в файле .pro, но я не смог точно определить ошибку. Не очень удовлетворительный ответ, но, по крайней мере, он работает.

person Alberto    schedule 17.09.2015