Qt 如何从主QWidget中移除QGraphicsTextItem的焦点
我在Qt 如何从主QWidget中移除QGraphicsTextItem的焦点,qt,qgraphicsview,qgraphicstextitem,Qt,Qgraphicsview,Qgraphicstextitem,我在QGraphicsView中绘制了许多qgraphicsextitem和QGraphicsItem。此QGraphicsView已添加到主Qwidget 我已经为此QGraphicsExtItem编写了“FocusOutEvent”,只有在QGraphicsView中调用“MousePresseEvent”时,焦点才会被移除 现在我关心的是,当在QGraphicsView外部调用MousePressEvent时,如何移除此qgraphicsextitem的焦点 在MainWindow.cpp
QGraphicsView
中绘制了许多qgraphicsextitem
和QGraphicsItem
。此QGraphicsView
已添加到主Qwidget
我已经为此QGraphicsExtItem
编写了“FocusOutEvent
”,只有在QGraphicsView
中调用“MousePresseEvent
”时,焦点才会被移除
现在我关心的是,当在QGraphicsView
外部调用MousePressEvent
时,如何移除此qgraphicsextitem
的焦点
在MainWindow.cpp中,我编写了一个mousePressEvent
函数:
void EyGuiMainWindow::mousePressEvent(QMouseEvent *e)
{
QWidget *w = QApplication::focusWidget();
if(w)
w->clearFocus();
}
但这并不是清除QGraphicsTextItem
期待积极响应。QGraphicsTextItem不是小部件,而是一个应用程序。图形项被添加到QGraphicscene中,并由一个或多个小部件查看 给出的代码只是在当前聚焦的小部件上调用clear focus,但是由于QGraphicsTextItem不是小部件,所以它不会被清除
要清除QGraphicsTextItem上的焦点,请调用其函数。如果没有指向该项目的指针,则可以使用函数获取场景中所有项目的列表,并对其进行迭代。非常感谢您的回答。我使用Items()获取场景项列表,并对它们进行迭代以清除它。它工作得很好。