Russian Qt Forum
Ноябрь 24, 2024, 00:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qwt.Перемещение по графику кнопкой мыши.  (Прочитано 4490 раз)
mus_zzz
Гость
« : Январь 15, 2016, 11:44 »

Добрый день!Возникла такая задача.Включаю возможность перемещения по графику и активирую клавишу перемещения.
 d_panner = new QwtPlotPanner( qwtPlot1_->canvas() );
 d_panner->setMouseButton( Qt::LeftButton );
При перемещении по графику зависает отображение кривой.Что интересно при этом по оси X значения изменяются.Что за магия?Непонимающий
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Январь 15, 2016, 13:51 »

Выложите минимальный пример.
Записан
mus_zzz
Гость
« Ответ #2 : Январь 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_);
Записан
mus_zzz
Гость
« Ответ #3 : Январь 15, 2016, 14:04 »

Это функция которая определяется в конструкторе QMainWindow
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Январь 15, 2016, 14:11 »

Нет. Так не получится Улыбающийся
Нужен отдельный простой пример-проект в зип архиве, где проявляется эта проблема.
У вас слишком много факторов, влияющих на поведение.
Записан
mus_zzz
Гость
« Ответ #5 : Январь 18, 2016, 08:18 »

Я взял примерчик padnavigator и на обратную сторону "планшета" выложил график.
« Последнее редактирование: Январь 18, 2016, 09:22 от mus_zzz » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Январь 18, 2016, 09:31 »

У меня там нет графика, оси X нет, сетка никак не перемещается.
Советую посмотреть sinusplot из примеров QwtPlot
Записан
mus_zzz
Гость
« Ответ #7 : Январь 18, 2016, 09:36 »

Я в процессе испытаний убрал график))Проблема то в перемещении по самому полотну(я так думаю).Вот пример прикрепил просто на виджет выложил полотно и свободно по нему перемещаюсь.А в предыдущем такое ощущение что событие отпускания кнопки мыши не срабатывает
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.