如何从主QWidget中移除QGraphicsTextItem的焦点



我在QGraphicsView内部绘制了多个QGraphicsTextItemQGraphicsItem。这个QGraphicsView已经被添加到主Qwidget中。

我已经为这个QGraphicsTextItem编写了"FocusOutEvent",只有当在QGraphicsView中调用"MousePressEvent"时,焦点才会被移除。

现在我关心的是,当MousePressEvent被调用到QGraphicsView之外时,如何移除这个QGraphicsTextItem的焦点?

MainWindow.cpp中,我编写了一个mousePressEvent函数:

void EyGuiMainWindow::mousePressEvent(QMouseEvent *e)
{
  QWidget *w = QApplication::focusWidget();
  if(w)
     w->clearFocus();
}

但这并没有清除QGraphicsTextItem

期望得到肯定的答复。

QGraphicsTextItem不是小部件,而是QGraphicsItem。图形项目被添加到QGraphicsScene中,并由一个或多个QGraphicsView小部件查看。

所提供的代码只是在当前关注的小部件上调用clear focus,但由于QGraphicsTextItem不是小部件,因此它不会被清除。

为了清除QGraphicsTextItem上的焦点,请调用其clearFocus函数。如果没有指向该项目的指针,则可以使用items()函数获取场景中所有项目的列表,并对其进行迭代。

相关内容

  • 没有找到相关文章

最新更新