【问题标题】:How to remove the focus of a QGraphicsTextItem from a main QWidget如何从主 QWidget 中移除 QGraphicsTextItem 的焦点
【发布时间】: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

期待积极的回应。

【问题讨论】:

    标签: qt qgraphicsview qgraphicstextitem


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢您的回答。我使用 Items() 来获取场景项目列表并对其进行迭代以清除它。效果很好。
    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多