Russian Qt Forum

Qt => Вопросы новичков => Тема начата: mus_zzz от Январь 15, 2016, 11:44



Название: qwt.Перемещение по графику кнопкой мыши.
Отправлено: mus_zzz от Январь 15, 2016, 11:44
Добрый день!Возникла такая задача.Включаю возможность перемещения по графику и активирую клавишу перемещения.
 d_panner = new QwtPlotPanner( qwtPlot1_->canvas() );
 d_panner->setMouseButton( Qt::LeftButton );
При перемещении по графику зависает отображение кривой.Что интересно при этом по оси X значения изменяются.Что за магия????


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: __Heaven__ от Январь 15, 2016, 13:51
Выложите минимальный пример.


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: mus_zzz от Январь 15, 2016, 14:03
Код:
QwtPlot *qwtPlot2_ = new QwtPlot(ui7->page1);

       qwtPlot2_->resize(1200,500);
       qwtPlot2_->setTitle( "--График--" );                                       // заголовок
       qwtPlot2_->setCanvasBackground( Qt::white );                               // цвет фона

       qwtPlot2_->setAxisTitle(QwtPlot::yLeft, "Текущий ток");                    // Параметры осей координат
       qwtPlot2_->setAxisTitle(QwtPlot::xBottom, "Время");
       qwtPlot2_->insertLegend( new QwtLegend() );

       QwtPlotGrid *grid2 = new QwtPlotGrid(); //
       grid2->setMajorPen(QPen( Qt::green, 2 ));                            // цвет линий и толщина
       grid2->attach( qwtPlot2_ );                                                // добавить сетку к полю графика

       QwtPlotMagnifier *magnifier2 = new QwtPlotMagnifier(qwtPlot2_->canvas());  // клавиша, активирующая приближение/удаление
       magnifier2->setMouseButton(Qt::MidButton);



       QwtPlotPanner *pl2_panner = new QwtPlotPanner( qwtPlot2_->canvas() );      // Включить возможность перемещения по графику
                                                                            // #include <qwt_plot_panner.h>
                                                                            // клавиша, активирующая перемещение
       pl2_panner->setMouseButton( Qt::RightButton );
       qwtPlot2_->setAutoReplot(true);
       plCalInsFlowChan_->qwtCurve0.setTitle("Расчитанный мгновенный расход к1");
       plCalInsFlowChan_->qwtCurve1.setTitle("Расчитанный мгновенный расход к2");
       plCalInsFlowChan_->qwtCurve2.setTitle("Расчитанный мгновенный расход к3");
       plCalInsFlowChan_->qwtCurve3.setTitle("Расчитанный мгновенный расход к4");
       plCalInsFlowChan_->qwtCurve4.setTitle("Расчитанный мгновенный расход к5");
       plCalInsFlowChan_->qwtCurve5.setTitle("Расчитанный мгновенный расход к6");
       plCalInsFlowChan_->qwtCurve6.setTitle("Расчитанный мгновенный расход к7");
       plCalInsFlowChan_->qwtCurve7.setTitle("Расчитанный мгновенный расход к8");
       QColor c;
       c.setRgb(255,0,0);
       plCalInsFlowChan_->qwtCurve0.setPen(c,4);
       c.setRgb(255,165,0);
       plCalInsFlowChan_->qwtCurve1.setPen(c,4);
       c.setRgb(85,107,47);
       plCalInsFlowChan_->qwtCurve2.setPen(c,4);
       c.setRgb(0,191,255);
       plCalInsFlowChan_->qwtCurve3.setPen(c,4);
       c.setRgb(0,0,255);
       plCalInsFlowChan_->qwtCurve4.setPen(c,4);
       c.setRgb(224,102,255);
       plCalInsFlowChan_->qwtCurve5.setPen(c,4);
       c.setRgb(0,0,0);
       plCalInsFlowChan_->qwtCurve6.setPen(c,4);
       c.setRgb(255,255,0);
       plCalInsFlowChan_->qwtCurve7.setPen(c,4);

       plCalInsFlowChan_->qwtCurve0.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve1.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve2.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve3.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve4.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve5.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve6.setRenderHint(QwtPlotItem::RenderAntialiased, true );
       plCalInsFlowChan_->qwtCurve7.setRenderHint(QwtPlotItem::RenderAntialiased, true );

       plCalInsFlowChan_->qwtCurve0.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve1.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve2.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve3.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve4.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve5.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve6.attach(qwtPlot2_);
       plCalInsFlowChan_->qwtCurve7.attach(qwtPlot2_);


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: mus_zzz от Январь 15, 2016, 14:04
Это функция которая определяется в конструкторе QMainWindow


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: __Heaven__ от Январь 15, 2016, 14:11
Нет. Так не получится :)
Нужен отдельный простой пример-проект в зип архиве, где проявляется эта проблема.
У вас слишком много факторов, влияющих на поведение.


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: mus_zzz от Январь 18, 2016, 08:18
Я взял примерчик padnavigator и на обратную сторону "планшета" выложил график.


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: __Heaven__ от Январь 18, 2016, 09:31
У меня там нет графика, оси X нет, сетка никак не перемещается.
Советую посмотреть sinusplot из примеров QwtPlot


Название: Re: qwt.Перемещение по графику кнопкой мыши.
Отправлено: mus_zzz от Январь 18, 2016, 09:36
Я в процессе испытаний убрал график))Проблема то в перемещении по самому полотну(я так думаю).Вот пример прикрепил просто на виджет выложил полотно и свободно по нему перемещаюсь.А в предыдущем такое ощущение что событие отпускания кнопки мыши не срабатывает