我在QGraphicsView
内部绘制了多个QGraphicsTextItem
和QGraphicsItem
。这个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()函数获取场景中所有项目的列表,并对其进行迭代。