crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> новичок + qwt
_Vitaliy_
  опции профиля:
сообщение 10.12.2009, 18:11
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 59
Регистрация: 20.11.2008
Пользователь №: 428

Спасибо сказали: 3 раз(а)




Репутация:   0  


Доброго времени суток уважаемое комьюнити.
Помогите неопытному (надеюсь пока) новичку побороть 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. При необходимости изменять масштаб. Соответственно чтобы графики между собой не плыли и соответствовали между собой по оси Х.

Знаю что хочу слишком много и сразу, но был бы признателен за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 3:56