crossplatform.ru

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

> Перемещение мыши над QGraphicsView
RazrFalcon
  опции профиля:
сообщение 23.3.2011, 23:39
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Главное(и единственное) окно - наследник QGraphicsView.
Но, mouseMoveEvent срабатывает только при нажатии ЛКМ, setMouseTracking(true); - не помогло.
Нужно отловить положение мышки относительно QGraphicsView/QGraphicsScene.

PS: проблема в том, что кроме QGraphicsView у меня должны быть и другие элементы на форме, но тогда я не могу перехватить положение мыши...
То есть, если главное окно наследник QMainWindow, то как отловить положение мыши над QGraphicsView?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 24.3.2011, 16:42
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


нет =/
Никогда раньше не сталкивался. Вот что получилось:
Раскрывающийся текст
#include "plot.h"
#include <QtDebug>

Plot::Plot()
{
    graphicsView = new QGraphicsView;
    graphicsView->installEventFilter(this);
    QGraphicsScene *scene = new QGraphicsScene();

    QPen pen(Qt::black, 2.0);

    qsrand(QDateTime::currentDateTime().toTime_t());

    int x1=0;
    int x2=0;
    int y1=0;
    int y2=0;
    for (int i=1,s=5; i<11; i++, s+=5)
    {
        x2 = x1+s;
        y2 = qrand()%100;

        scene->addLine(x1,y1,x2,y2,pen);
        qDebug()<<x1<<y1<<x2<<y2;

        x1 = x2;
        y1 = y2;
        x2 = s*(i+1);
        y2 = qrand()%100;

        scene->addLine(x1,y1,x2,y2,pen);
        qDebug()<<x1<<y1<<x2<<y2;

        x1 = x2;
        y1 = y2;

        qDebug()<<"-------------";
    }

    vLine = new QGraphicsLineItem;

    vLine->setLine(10,0,10,height());
    scene->addItem(vLine);

    graphicsView->setScene(scene);
    scene->setSceneRect(0,0,560,350);
    //setDragMode(QGraphicsView::ScrollHandDrag);
    graphicsView->setRenderHint(QPainter::Antialiasing, true);
    graphicsView->viewport()->setMouseTracking(true);

    setCentralWidget(graphicsView);
}

bool Plot::eventFilter(QObject *obj, QEvent *event)
{
     if (obj == graphicsView) {
         if (event->type() == QEvent::MouseMove)
         {
             QMouseEvent *mEvent = static_cast<QMouseEvent*>(event);
             //QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
             //qDebug() << "Ate key press" << keyEvent->key();
             qDebug() << mEvent->pos();
             return true;
         } else {
             return false;
         }
     } else {
         // pass the event on to the parent class
         return QMainWindow::eventFilter(obj, event);
     }
}

Ничего...
На QEvent::MouseButtonPress срабатывает =/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- RazrFalcon   Перемещение мыши над QGraphicsView   23.3.2011, 23:39
- - abc   а что хочешь делать с этим MoveEvent?   24.3.2011, 0:08
- - Алексей1153   наверное void QWidget::setMouseTracking ( bool en...   24.3.2011, 8:10
- - RazrFalcon   Суть: есть окно, наследник QGraphicsView. Из-за эт...   24.3.2011, 8:23
- - abc   если ты в дизайнере поставишь setMouseTracking на ...   24.3.2011, 12:24
- - RazrFalcon   Не вышло. Вот код: .cpp Раскрывающийся текст#inclu...   24.3.2011, 14:16
- - abc   где ты нашёл этот метод? void mouseMoveEvent(QGrap...   24.3.2011, 15:00
- - RazrFalcon   Ура, работает. >>Если виджеты на сцену, то ...   24.3.2011, 15:12
- - abc   зачем ты полез наследоваться от вью? создай виджет...   24.3.2011, 15:19
- - RazrFalcon   Но тогда я буду перехватывать положение курсора от...   24.3.2011, 15:24
- - abc   ты не знаком с eventFilter? http://doc.crossplatfo...   24.3.2011, 16:02
- - RazrFalcon   нет =/ Никогда раньше не сталкивался. Вот что полу...   24.3.2011, 16:42
- - abc   опять же viewport graphicsView->viewport->in...   24.3.2011, 16:52
- - RazrFalcon   Не помогло   24.3.2011, 17:03
- - abc   это в любом случае нужно возвращать, а у тебя в el...   24.3.2011, 17:24
- - RazrFalcon   без else вообще не работает, просто пустой QGraphi...   24.3.2011, 17:46
- - abc   забудь про else) Цитата(RazrFalcon @ 24.3.201...   24.3.2011, 18:48
- - RazrFalcon   Рабочий пример: .cpp Раскрывающийся текст#include ...   24.3.2011, 19:07
- - abc   пользуюсь дизайнером) а ты почему нет?   24.3.2011, 19:12
- - RazrFalcon   Часто писали что так проще, да и мне уже стало про...   24.3.2011, 19:18
- - abc   а что за мысли о ресайзе? чего-то я никогда о нём ...   24.3.2011, 19:25
- - RazrFalcon   Ну, к примеру, что бы при растягивании, таблица ра...   24.3.2011, 19:35
- - abc   это делается с помощью распорок (Spacer), а попрос...   24.3.2011, 19:50
- - RazrFalcon   Раньше я этого не знал, сейчас уже знаю. Без дизай...   24.3.2011, 20:27
- - abc   как это на виду без него?   24.3.2011, 20:43
- - RazrFalcon   Я имею ввиду, что мне удобней самому все создавать...   24.3.2011, 21:10
- - abc   с дизайнером можно почувствовать, что ты программи...   24.3.2011, 21:26
- - RazrFalcon   RE: Перемещение мыши над QGraphicsView   24.3.2011, 22:11
- - MetalKrot   ЦитатаРабочий пример: не очень то и рабочий. у ме...   18.8.2011, 12:06


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


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




RSS Текстовая версия Сейчас: 27.2.2025, 14:25