Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何从主QWidget中移除QGraphicsTextItem的焦点_Qt_Qgraphicsview_Qgraphicstextitem - Fatal编程技术网

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()获取场景项列表,并对它们进行迭代以清除它。它工作得很好。