안녕 내 응용 프로그램에서 나는를 QGraphicsView을 만들고 그 위에 장면 설정 해요 :이상한 제어 경계 감지
QGraphicsProxyWidget *rotateItemIcon;
HoverFilter *hv = new HoverFilter(); // my hover filter class
connect(hv,SIGNAL(SignalHover(QObject*)),this,SLOT(ObjectHover(QObject*)));
connect(hv,SIGNAL(SignalHoverLeave(QObject*)),this,SLOT(ObjectHoverLeave(QObject*)));
ui->TestIcon->installEventFilter(hv);
...
scene = new QGraphicsScene(this);
scene->setSceneRect(0, 0, 661, 255);
ui->TestIcon->setParent(NULL);
rotateItemIcon = scene->addWidget(ui->TestIcon); // here i add my control to the scene and receive QGraphicsProxyWidget object
rotateItemIcon->setTransformOriginPoint(ui->TestIcon->width()/2,
ui->TestIcon->height()/2);
ui->graphicsViewFive->setScene(scene); //QGraphicsView on my form
ui->graphicsViewFive->show();
내 HoverFilter.cpp
#include "hoverfilter.h"
#include "QDebug"
HoverFilter::HoverFilter()
{
}
bool HoverFilter::eventFilter(QObject *dist, QEvent *event)
{
if(event->type() == QEvent::Enter)
{
emit SignalHover(dist);
return true;
}
if(event->type() == QEvent::Leave)
{
emit SignalHoverLeave(dist);
return true;
}
return false;
}
rotateItemIcon 내 QGraphicsProxyWidget이다하고 문제는 이상한 경계가 있다는 것입니다. 내 컨트롤의 마우스를 가져 가면 일부 애니메이션을 구현해야합니다. TestIcon (이벤트 필터를 사용하여 완료) 마우스를 입력하고 마우스를 놓으면 마우스가 무작위로 드래그됩니다. 제어. QGraphicsScene 호버 감지에 내 컨트롤을 추가하지 않으면 잘 작동하므로 이것이 장면/프록시 위젯 문제라고 가정합니다. QGraphicsProxyWidget에 크기 또는 경계를 설정하여이를 막을 수있는 방법이 있습니까?
죄송합니다. QGraphicsProxyWidget을 만드는 코드를 잊어 버렸습니다. 예를 들어 scene-> addWidget (TestIcon);을 사용하여 장면에 위젯을 배치하고, 호버 용 이벤트 필터가 TestIcon에 설치되어 있습니다. rotateIcon은 내 QGraphicsProxyWidget입니다. – SirLanceloaaat
장면에 내 위젯을 추가하면 호버 감지가 중단됩니다. – SirLanceloaaat
모든 코드를 추가하고 '휴식'의 의미를 설명하십시오. – TheDarkKnight