我在QGraphicsTextItem
内画了一些QGraphicsItem
和QGraphicsView
。此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
。
期待积极的回应。
答案 0 :(得分:1)
QGraphicsTextItem不是小部件,而是QGraphicsItem。图形项目被添加到QGraphicsScene并由一个或多个QGraphicsView小部件查看。
所呈现的代码仅调用当前关注的窗口小部件,但由于QGraphicsTextItem不是窗口小部件,因此无法清除它。
为了清除对QGraphicsTextItem的关注,请调用其clearFocus函数。如果您没有指向该项目的指针,则可以使用items()函数获取场景中所有项目的列表并迭代它们。