Оба элемента создаются в конструкторе Mainwindow, добавленная сцена со сценой-> additem () < / Код>. < /p>
Код: Выделить всё
MyWindow::MyWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MyWindowClass())
, _scene(new QGraphicsScene(this))
, _item_drawing(new ItemDrawing())
, _item_image(new ItemImage())
{
...
_scene->addItem(_item_drawing);
_scene->addItem(_item_image);
ui->view->setScene(_scene);
}
Кроме Graphics View и называется QgraphicsView :: MouseMoveEvent .
Код: Выделить всё
/* ItemImage */
ItemImage::ItemImage(QGraphicsItem* parent)
: QGraphicsItem(parent)
{
setAcceptHoverEvents(true);
setFlags(ItemIsSelectable | ItemIsMovable);
}
void ItemImage::hoverMoveEvent(QGraphicsSceneHoverEvent* event)
{
...
QGraphicsItem::hoverMoveEvent(event);
}
/* ItemDrawing */
ItemDrawing::ItemDrawing(QGraphicsItem* parent)
: QGraphicsPixmapItem(parent)
, _temp_measure()
{
setZValue(1);
setTransformationMode(Qt::SmoothTransformation);
setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
setAcceptHoverEvents(true);
}
void ItemDrawing::hoverMoveEvent(QGraphicsSceneHoverEvent* event)
{
...
QGraphicsItem::hoverMoveEvent(event);
}
/* GraphicsView which inherits QGraphicsView */
void GraphicsView::mouseMoveEvent(QMouseEvent* e)
{
...
QGraphicsView::mouseMoveEvent(e);
}
< /code>
Я хочу получить пари ... Событие < /code> на обоих элементах, которые перекрываются в одних и тех же координатах.
Пока только самый высокий элемент Z-порядка получает Событие (то есть ItemDrawing, которое называется setzValue (1)
и я посмотрел на реализацию QT qgraphicsceneprivate :: dispatchhoverevent < /code>, но, похоже, это не распространяет событие всем пунктам, расположенным под мышкой. /p>
Так что мой вывод заключается в том, что для оба элемента невозможно получить события, но я не уверен, прав ли я или что я что -то упускаю. < /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... aphicsitem