crossplatform.ru

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


  Ответ в MouseMoveEvent
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
quarz Дата 8.7.2010, 23:23
  Спасибо, Юрий!
Действительно, в графическое представление встроен функционал для перетаскивания. За это отвечает флаг QGraphicsItem::ItemIsMovable
Litkevich Yuriy Дата 8.7.2010, 18:30
 
Цитата(quarz @ 8.7.2010, 21:59) *
Как будто GraphicsView не передает событие родителю
собственно это штатное поведение, если обработчик события у виджета есть, то он его и принял, дальше оно пойдёт только в случае если обработчик события выставит флаг "ignore".
для того чтобы ловить чужое событие нужно ставить "фильтр событий", смотри QObject::installEventFilter(), там приведён пример как это делать.


П.С. а вообще каркас графического представления уже имеет реализацию перетаскивания элементов, нужно только элементу соответствующий флаг установить
quarz Дата 8.7.2010, 17:59
  есть главное окно
class MyProgram : public QMainWindow
на которое с помощью дизайнера вставлен QGraphicsView.
Мне надо ловить события мыши и колеса прокрутки, для перемещения графики по сцене.

Делаю это так:
void MyProgram::mousePressEvent (QMouseEvent *event){}
void MyProgram::mouseReleaseEvent (QMouseEvent *event){}
void MyProgram::mouseMoveEvent(QMouseEvent *event){}
void MyProgram::wheelEvent(QWheelEvent *event){}


Если кликнуть мышью по форме (не по GraphicsView), то все события срабатывают.
А если кликнуть над GraphicsView и потаскать мышь с зажатой кнопкой, то MousePress сработает, а MouseMove - нет.
Почему?
Как будто GraphicsView не передает событие родителю, но почему тогда MousePress срабатывает?
Что-то я в этих событиях еще не разобрался...
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:35