0

我有一些,QGraphicsTextItem里面QGraphicsItem画了一个QGraphicsView。这QGraphicsView已添加到 main Qwidget.

我已经FocusOutEvent为此编写了“”,QGraphicsTextItem并且仅当MousePressEventQGraphicsView.

QGraphicsTextItem现在我关心的是,当MousePressEvent被称为“外部”时,如何移除焦点QGraphicsView

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

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

但这不是清除QGraphicsTextItem.

期待积极的回应。

4

1 回答 1

1

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

呈现的代码仅对当前聚焦的小部件调用清除焦点,但由于 QGraphicsTextItem 不是小部件,因此不会被清除。

为了清除 QGraphicsTextItem 上的焦点,调用它的clearFocus函数。如果您没有指向该项目的指针,则可以使用items()函数获取场景中所有项目的列表并遍历它们。

于 2014-10-27T13:22:23.237 回答