如何从主 QWidget 中移除 QGraphicsTextItem 的焦点

Posted

技术标签:

【中文标题】如何从主 QWidget 中移除 QGraphicsTextItem 的焦点【英文标题】:How to remove the focus of a QGraphicsTextItem from a main QWidget 【发布时间】:2014-10-27 12:44:10 【问题描述】:

我在QGraphicsView 内绘制了许多QGraphicsTextItemQGraphicsItem。此QGraphicsView 已添加到主Qwidget

我已经为此QGraphicsTextItem 编写了“FocusOutEvent”,并且仅当在QGraphicsView 中调用“MousePressEvent”时才会移除焦点。

现在我关心的是,当MousePressEventQGraphicsView 之外被调用时,如何移除QGraphicsTextItem 的焦点?

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

void EyGuiMainWindow::mousePressEvent(QMouseEvent *e)

  QWidget *w = QApplication::focusWidget();
  if(w)
     w->clearFocus();

但这并没有清除QGraphicsTextItem

期待积极的回应。

【问题讨论】:

【参考方案1】:

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

呈现的代码只是在当前聚焦的小部件上调用清除焦点,但由于 QGraphicsTextItem 不是小部件,它不会被清除。

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

【讨论】:

非常感谢您的回答。我使用 Items() 来获取场景项目列表并对其进行迭代以清除它。效果很好。

以上是关于如何从主 QWidget 中移除 QGraphicsTextItem 的焦点的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UITextField 中移除焦点?

如何从JavaScript对象中移除一个属性

如何观察 NSManagedObject 是不是从 managedObjectContext 中移除

如何从 MaterialCardView 中移除涟漪效应?

iPhone:按下时如何从 UIBarButtonItem 中移除发光(光)?

如何从提交按钮中移除焦点