我有一个继承自QGraphicsScene的类。我在这个类中有一个mouseMoveEvent。基于鼠标移动,我通过信号将坐标发送到主窗口。我在主窗口中有多个GraphicViews。根据接收信号的场景,我使用QGraphicsTextItem显示场景坐标。 问题是当我离开场景区域时,我无法隐藏QGraphicsTextItem。 有人能为我解决这个问题吗?
Class Scene::QGraphicsScene
{
void MouseMoveEvent(QGraphicsSceneMouseEvent *Event)
{
int XPos = event.x();
int YPos = event.y();
emit SignalPos(XPos,YPos);
}
}
//In Main Window
connect(scene1,SignalPos(int,int),this,SlotPos1(int,int);
//Similarly for scene2,scene3,scene4
void MainWindow::SlotPos(int X, int Y)
{
m_qgtxtItemX.setText(QString::x);
//I want to hide this once I am out of scene.It is a member variable. I tried
//taking local variable but it didn't work.
//Similarly for y and other slots
}
答案 0 :(得分:1)
在场景中安装事件过滤器。
scene1->installEventFilter(this);
然后在“this”引用的类中实现该方法:
bool eventFilter(QObject *watched, QEvent *event) {
if (event->type() == QEvent::Leave)
{
qDebug() << "Mouse left the scene";
}
return false;
}
刚尝试过,它有效!如果要在多个对象上安装事件过滤器,请使用“watched”来区分它们。
最佳,