Помогите неопытному (надеюсь пока) новичку побороть qwt.
Есть код:
Раскрывающийся текст
#include <QtGui/QStandardItemModel>
#include "obrabotka.h"
#include "mainwindow.h"
#include <qwt_plot.h>
#include <qwt_plot_marker.h>
#include <qwt_plot_curve.h>
#include <qwt_legend.h>
#include <qwt_data.h>
#include <qwt_text.h>
#include <qwt_math.h>
#include <qwt_scale_widget.h>
#include <qwt_painter.h>
#include <qwt_plot_canvas.h>
#include <math.h>
obrabotka::obrabotka(QWidget *parent)
:QDialog(parent)
{
}
obrabotka::~obrabotka()
{
}
void obrabotka::obra()
{
}
void obrabotka::setModel(QStandardItemModel *model)
{
m_model = model;
QList<double> x0, x1, x2, x3;
int Size = m_model->rowCount();
double X0[Size], X1[Size], X2[Size], X3[Size];
for (int i = 0; i < m_model->rowCount(); i++) {
x0.append(m_model->item(i, 0)->text().toDouble());
x1.append(m_model->item(i, 1)->text().toDouble());
x2.append(m_model->item(i, 2)->text().toDouble());
}
for (int i = 0; i < m_model->rowCount(); i++) {
X0[i] = x0[i];
X1[i] = x1[i];
X2[i] = x2[i];
}
//******* Grafiki *****
QwtPlot *myPlot = new QwtPlot(tr("Grafiki zavisimosti parametrov ot vremeni"), this);
// add curves
QwtPlotCurve *curve1 = new QwtPlotCurve("H ot T");
curve1->setRenderHint(QwtPlotItem::RenderAntialiased);
QwtPlotCurve *curve2 = new QwtPlotCurve("Curve 2");
// Axis of plot
myPlot->setAxisTitle(QwtPlot::xBottom, "Time/seconds");
myPlot->setAxisTitle(QwtPlot::yLeft, "Height/meters");
curve1->setPen(QPen(Qt::red));
curve2->setPen(QPen(Qt::blue));
curve1->setData(X0,X1,Size);
curve2->setData(X0,X2,Size);
curve1->attach(myPlot);
curve2->attach(myPlot);
// finally, refresh the plot
myPlot->resize(600, 500);
myPlot->replot();
//*************
}
Вроде сам график выводить научился, образования хватило... а дальше темный лес.
Необходимо:
1. График должен растягиваться на все окно (окно, в котором он выводится) и при изменении размеров окна он тоже должен изменяться. Вроде нужно было правильно унаследовать: QwtPlot *myPlot = new QwtPlot(tr("Grafiki zavisimosti parametrov ot vremeni"), this) но у меня не получилось. В примере simpleplot это вроде понятно, хотя я могу и ошибаться...
Раскрывающийся текст
int main(int argc, char **argv)
{
QApplication a(argc, argv);
Plot plot;
#if QT_VERSION < 0x040000
a.setMainWidget(&[b]plot)[/b];
#endif
plot.resize(600,400);
plot.show();
return a.exec();
}
а когда несколько окон, как у меня, я честно говоря недопонимаю...
2. Т.к. ось Х в идеале имеет значение в несколько тысяч единиц, то необходим "скролл", примеры смотрел но не понял. Тем более что графиков планируется около 7 то соответственно они должны "скролироваться" все одновременно.
3. Нужно выводить значение на графике при наведении на него мышкой.
4. При необходимости изменять масштаб. Соответственно чтобы графики между собой не плыли и соответствовали между собой по оси Х.
Знаю что хочу слишком много и сразу, но был бы признателен за помощь.