У меня есть QGraphicsScene, QGraphicsView и некоторые подклассы QGraphicsItems.Я хочу отследить, какой элемент находится под курсором, видимым сверху.Он работает нормально, используя hoverEnterEvent в большинстве ситуаций, но если у меня есть два объекта, где один находится над другим, он работает при вводе обоих, но не при выходе из внутреннего объекта (и повторного входа во внешний, так как он никогда не оставлял внешний впервое место).
+-------------------------------------+
outside | |
| outer |
| |
| |
| +-------------+ | +-------------+
| | | | | |
| | | | | another |
| | inner | | | |
| | | | | |
| | | | +-------------+
| +-------------+ |
| |
| |
| |
| |
+-------------------------------------+
outside -> outer : works, outer is selected
outside -> outer -> outside -> another : works, first outside is selected, than nothing, than another
outer -> inner : works, inner is seletected
outside -> outer -> inner -> outer: does not work, first outside is selected, than inner, but than nothing (should be outer again)
Что я могу сделать, кроме циклического перебора всех графических элементов, запускаемых с помощью небольшого отложенного одиночного снимка на hoverLeaveEvent?
Редактировать: я нашел временное решение: я добавилglobal QList , где в MyQGraphicsItem :: hoverEnterEvent я добавляю «this», а в MyGraphicsItem :: hoverLeaveEvent я удаляю последний элемент в списке.Таким образом, myGlobalQList.last () всегда содержит самый верхний элемент, видимый под курсором.Я предполагаю, что это не лучшее решение, поскольку QList не является поточно-ориентированным, поэтому я все еще заинтересован в других решениях.