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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить координаты мыши, при обработке события от клавиатуры (график QWT)  (Прочитано 4300 раз)
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« : Ноябрь 26, 2011, 15:29 »

Здравствуйте.

Есть график QWT который масштабирую.

Основа взята из уроков
http://www.prog.org.ru/topic_11884_0.html
http://qtlinux.narod.ru/qwtchartzoom.htm

Отдельное спасибо их авторам.

Перехватываются события элементов управления в

Код:
 eventFilter(QObject *obj,QEvent *event)

который зарегистрирован в канве

Код:
 qwtp->canvas()->installEventFilter(this);

Шкала по Х мне нужна только положительная.
При масштабировании я запоминаю, положение Х курсора мыши,
для того чтобы при масштабировании графика, эта точка на графике, оставалась на месте, а двигался  график по бокам.

Все работает при прокрутке колесом мыши.

Но мне нужно изменять масштаб клавишами '+', '-'

Я перехватываю события от клавиатуры в eventFilter

Код:
        if (event->type() == QEvent::KeyPress ||
            event->type() == QEvent::KeyRelease)
        {
           QKeyEvent *kEvent = static_cast<QKeyEvent *>(event);
           ......
        }

Тоже все замечательно, но тут главная проблема я не могу получить координаторы мыши

Если сделать так

Код:
    QMouseEvent *mEvent = static_cast<QMouseEvent *>(event);

То в mEvent получаю левые значения.

Проблему решил следующим образом, постоянно отслеживаю положение мыши и сохраняю ее координаты.

В принципе все работает, но хочется считать положение курсора мыши вместе с обработкой события от клавиатуры.

Подскажите как это реализовать.
Записан
twp
Гость
« Ответ #1 : Ноябрь 28, 2011, 17:15 »

а какие координаты приходят? вообще то не мешало бы еще проверять что qwtp->canvas() == obj в eventFilter
Записан
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« Ответ #2 : Ноябрь 28, 2011, 17:44 »

вообще то не мешало бы еще проверять что qwtp->canvas() == obj в eventFilter

Это все сделано.

а какие координаты приходят?

Что то типа х = -17672346 y = -1723523
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Ноябрь 28, 2011, 22:14 »

Код
C++ (Qt)
QCursor::pos()
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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