QGraphicsRectItem
호버 입력 및 호버 이탈 이벤트 캡처에 문제가 있습니다.호버업 이벤트 사용
이 객체를 서브 클래 싱하고 호버 입력 및 호버 이탈 핸들러를 다시 구현합니다 ... 또는 적어도 가지고 있다고 생각합니다. 또한 생성자에서 hover 이벤트를 true로 설정합니다.
그러나 이벤트는 실행되지 않습니다. 핸들러 내부의 중단 점은 절대 적중되지 않습니다.
#include "qhgraphicsrectitem.h"
QhGraphicsRectItem::QhGraphicsRectItem(QGraphicsRectItem *parent) :
QGraphicsRectItem(parent)
{
setAcceptHoverEvents(true);
setAcceptsHoverEvents(true);
}
void QhGraphicsRectItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
oldBrush = brush();
setBrush(QBrush(QColor((oldBrush.color().red() + (0.5 * (255-oldBrush.color().red()))),(oldBrush.color().green() + (0.5 * (255-oldBrush.color().green()))),(oldBrush.color().blue() + (0.5 * (255-oldBrush.color().blue()))))));
}
void QhGraphicsRectItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) {
setBrush(oldBrush);
}
그것이 내가 잘못하고 오전 무엇 : 여기
클래스입니까?
QGraphicsItem의 메소드가 아닌 "setAcceptsHoverEvents"를 제외하고 게시 된 코드가 잘 보입니다. 어쩌면 그건 당신이 한 다른 것일 수도 있습니다. 어쨌든'setBrush' 다음에'update()'를 호출해야 할 수도 있습니다. 너는 직사각형을 전혀 망치고 있니? – Anthony
@Anthony 나는 rect를 바꾸지 않을 것이다. 내 QGraphicsView 또는 QGraphicsScene을 사용하여 이러한 이벤트를 처리하지 않습니다 ... 업데이트를 시도했지만 아무 일도 없었습니다. – Luke
"setAcceptsHoverEvent"는 클래스에 있었지만 소스를 확인하면 감가 상각되었습니다. 마우스를 올려 놓으면 mousemove 이벤트가 기본적으로 발생하지 않으므로 항목에 호버 이벤트가 발생하지 않습니다. 그 (것)들을 얻거나, 무시하거나, QGraphicsView :: setMouseTracking (진실한)를 눌러서 눌러야하는 w/o 단추의 아래 보내진 쥐 이동 사건을 얻으십시오 ... 나는 setAcceptsHoverEvents에서 개인적으로 setAcceptsHoverEvents에서 부호를 새롭게해야했다, 보인다 어리석은 일처럼 바뀌지 만 완전히 모호하지는 않았던 것 같아요. – osirisgothra