перехватывать события мыши при создании пользовательского QGraphicsItem - PullRequest
0 голосов
/ 21 января 2011

Я использую стандартные QGraphicsView и QGraphicsScene, но я подклассифицировал QGraphicsPixmapItem в свой собственный ImagePixmapItem, чтобы иметь возможность использовать события мыши в ImagePixmapItem.

Что мне нужно сделать, чтобыбыть в состоянии захватить эти события?Я переопределил несколько функций, таких как:

   void ImagePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event){

       qDebug("hello");

   }

void ImagePixmapItem::wheelEvent ( QGraphicsSceneWheelEvent * event ){
    qDebug("Print this line if catch a wheelEvent");//this is never printing

}

Однако ни один из этих операторов qDebug никогда не печатает на консоль.Нужно ли мне что-то изменить в моей сцене или графическом представлении?В конструктор для ImagePixmapItem я добавил пару вещей:

setAcceptHoverEvents(true);
setFlag(QGraphicsItem::ItemIsSelectable,true);

Но это не помогло.

1 Ответ

0 голосов
/ 21 января 2011

Вы можете использовать фильтры событий.

http://cartan.cas.suffolk.edu/qtdocs/eventsandfilters.html

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

...