こんにちは、私のアプリケーションで 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 のホバー時にいくつかのアニメーションを実装する必要があります (イベント フィルターを使用して実行しました)。 、私の TestIcon コントロールだけではありません。コントロールを QGraphicsScene ホバー検出に追加しないと正常に動作するため、これはシーン/プロキシウィジェットの問題であると想定しています。サイズまたは境界を QGraphicsProxyWidget に設定してそれを止める方法はありますか?