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

时间:2014-10-27 12:44:10

标签: qt qgraphicsview qgraphicstextitem

我在QGraphicsTextItem内画了一些QGraphicsItemQGraphicsView。此QGraphicsView已添加到主Qwidget

我写了" FocusOutEvent"对于此QGraphicsTextItem,只有在" MousePressEvent"在QGraphicsView内调用。

现在我关注的是,如何在QGraphicsTextItem之外调用MousePressEvent时删除此QGraphicsView的焦点?

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

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

但这并不是在清除QGraphicsTextItem

期待积极的回应。

1 个答案:

答案 0 :(得分:1)

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

所呈现的代码仅调用当前关注的窗口小部件,但由于QGraphicsTextItem不是窗口小部件,因此无法清除它。

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