Название: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 22, 2012, 16:53 Задача вроде не сложная, но где-то я не правильно делаю.
Идея в том, что бы вывести в QLabel координаты мыши (х,у), при её нахождении в QGraphicsScene. Вот код: void Widget::mouseMoveEvent(QMouseEvent* event){ QPoint viewPos = event->pos(); QPointF scenePos(ui->graphicsView->mapToScene(viewPos)); ui->label->setText(QString::number(scenePos.rx())+" "+QString::number(scenePos.y())); } Название: Re: Положение мыши в QGraphicsView. Отправлено: GreatSnake от Сентября 22, 2012, 16:58 Что такое Widget?
Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 22, 2012, 18:05 Класс в котором объявлен прототип
Название: Re: Положение мыши в QGraphicsView. Отправлено: GreatSnake от Сентября 22, 2012, 22:20 Класс в котором объявлен прототип И какое отношение он имеет к QGraphicsView ???Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 22, 2012, 22:36 QGraphicsView у меня находится на форме.
Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 23, 2012, 21:53 Пока я не понял в чем моя ошибка. Буду рад любым советам
Название: Re: Положение мыши в QGraphicsView. Отправлено: V1KT0P от Сентября 23, 2012, 22:42 Пока я не понял в чем моя ошибка. Буду рад любым советам Я например так и не понял что именно ты хочешь, то что координаты это понятно, но вот относительно чего: самого графиквиева, виджета на котором он находится, окна, экрана. Скажи точно что хочешь и выложи минимальный проект где это не работает.Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 23, 2012, 23:11 Относительно QGraphicView.
widget.h Код: class Widget : public QWidget widget.cpp Код: Widget::Widget(QWidget *parent) : Нужно что бы ui->label выводило координаты курсора(х,у) относительно ui->graphicsview; Название: Re: Положение мыши в QGraphicsView. Отправлено: V1KT0P от Сентября 23, 2012, 23:29 Если не хочешь заморачиваться с мапами туда сюда, то вот такой грязный хак который тем не менее будет работать 100%:
Код Ибо если делать правильно: Код надо много всяких моментов учитывать, например наличие QToolBar вносит искажения в координаты если его не учитывать. Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 23, 2012, 23:45 Я наверно не правильно излагаю требования.
Когда курсор находится в graphicsview , то в label пишутся координаты курсора.Если же он не в graphicsview, то координаты не пишутся Вот скрин (http://www.imgup.ru/images_small/qv5x964109.jpg) (http://www.imgup.ru/image-qv5x964109.html) Название: Re: Положение мыши в QGraphicsView. Отправлено: V1KT0P от Сентября 24, 2012, 07:28 Когда курсор находится в graphicsview , то в label пишутся координаты курсора.Если же он не в graphicsview, то координаты не пишутся Ладно не хочешь выкладывать минимальный проект, тогда я выкладываю минимальный проект в котором все работает и сделано правильным способом.Название: Re: Положение мыши в QGraphicsView. Отправлено: GreatSnake от Сентября 24, 2012, 11:08 Здесь 2 варианта:
1. перегрузить QGraphicsView::mouseMoveEvent() 2. в Widget повесить eventFilter() на ui->graphicsView и уже в нём отлавливать перемещение мыши Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 24, 2012, 20:24 Вот мой минимальный проект и я уже не знаю в чем проблема.
Название: Re: Положение мыши в QGraphicsView. Отправлено: V1KT0P от Сентября 24, 2012, 21:11 Вот мой минимальный проект и я уже не знаю в чем проблема. Ты просто не понял как я преобразовал QGraphicsView в MyGraphicsView в дизайнере.Жмешь в дизайнере правой кнопкой на том объекте от которого хочешь наследоваться и чтоб он был в дизайнере и выбираешь "Преобразовать в..." там появится окошко как в аттаче. Вбиваешь новое имя класса и имя заголовочного файла, жмешь добавить и преобразовать. Создаешь теперь заголовочный и исходный файл в соответствии с тем названием что ты выбрал(Жалко что оно не само генерируется) и там описываешь новый класс. Очень удобно когда тебе хочется одновременно и унаследоваться от какого-либо класс и в дизайнере его визуально разместить. Если вдруг после компиляции будет ругаться то очисти проект и если не удалился файл ui_widget.h, то удали. После того как он снова сгенерируется дизайнером то там будет уже не QGraphicsView а твой MyGraphicsView. Название: Re: Положение мыши в QGraphicsView. Отправлено: kip_one от Сентября 24, 2012, 22:26 Большое спасибо за объяснение я так понял азов :) Все получилось и даже работает правильно.
|