В настоящее время я работаю над Ubuntu 14.04, используя gcc 4.9.2 и Qwt 6.1.3; Я установил как Qt 4.8.6, так и Qt 5.2.1 (и мне интересно, может ли это быть связано с проблемами, которые я испытываю).Кривые обновления проблемы в QwtPlot 6.1.3
У меня есть простой графический интерфейс с 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 точек на кривой и Replot его. Соответствующие методы:
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
при нажатии кнопки pushButton. Итак, возможно, что-то не так с функцией 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: Фраза указывая вопрос был вырезан по ошибке.
Так в чем проблема? Я думаю, вы забыли упомянуть, что происходит/не происходит, когда вы нажимаете кнопку – Bowdzone
Уопс! :// Одна из фраз была вырезана. Короче говоря, метод
updateGraph
не обновляет виджет QwtPlot. Я уверен, что программа правильно вводит методsynchronous
, но ничего визуально не изменяется при вызовеupdateGraph
. – Alberto