Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: silart от Август 17, 2011, 12:23



Название: QwtPlotZoomer Как правильно его настроить?
Отправлено: silart от Август 17, 2011, 12:23
Добрый день всем!

Мне нужен график, который позволяет приближать выделенное левой кнопкой мыши изображение. При нажатии на правую кнопку мыши, график должен нарисовать предыдущее изображение.
В библиотеке QWT есть пример friedberg, который все это делает.
Зумер там настраивается вот так:

Код:
    QwtPlotZoomer* zoomer = new QwtPlotZoomer( canvas() );

    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier );
    zoomer->setMousePattern( QwtEventPattern::MouseSelect3, Qt::RightButton );

Только вот я совсем не пойму этот код. Что означают параметры функции setMousePattern?
Что такое паттерны мыши (и клавиатуры)? В документации толком не написано ничего. Что такое MouseSelect2 и чем он отличается от MouseSelect3? Объясните пожалуйста.


Название: Re: QwtPlotZoomer Как правильно его настроить?
Отправлено: popper от Август 17, 2011, 17:45
Судя по описанию в файле qwt_event_plot.h паттерны созданы для разных типов мышей (1, 2, 3 кнопки). Соответственно, для каждого типа мыши зуминг будет реализован таким образом, как указано в параметрах setMousePattern 


Название: Re: QwtPlotZoomer Как правильно его настроить?
Отправлено: silart от Август 18, 2011, 14:05
А с пареметрами setMousePattern() вы разобрались?
Что передается первым параметром, что вторым, что третьим?

В коде везде стоит Qt::RightButton вторым параметром, а выделение происходит левой кнопкой.
Я вот и понять не могу.


Название: Re: QwtPlotZoomer Как правильно его настроить?
Отправлено: madRoger от Август 18, 2011, 14:20
может просто менять границы осей графика. Получится тот же зум, только без всяких Zoomer'ов.


Название: Re: QwtPlotZoomer Как правильно его настроить?
Отправлено: silart от Август 19, 2011, 05:07
может просто менять границы осей графика. Получится тот же зум, только без всяких Zoomer'ов.
Ну также не интересно! Зумер так классно работает, причем сам, ниче делать не надо. А если менять границы осей, так это же надо дополнительный функционал писать.

Зумер у меня работает, я сделал как в примере. Только я понять не могу принцип его настройки.


Название: Re: QwtPlotZoomer Как правильно его настроить?
Отправлено: popper от Август 19, 2011, 16:05
класс qwt_plot_zoomer как наследник  qwt_plot_picker хранит набор паттернов - событий мыши - и переопределяет реакцию на эти события. если событие соответствует паттерну MouseSelect1, зоомер "увеличивает" выделенную область, MouseSelect3 - выводит предыдущий масштаб. методом SetMousePattern задается, какими кнопками будет реализован сам паттерн.