0

の中にいくつかのQGraphicsTextItemQGraphicsItemが描かれていQGraphicsViewます。これQGraphicsViewはメインに追加されましたQwidget

FocusOutEventこのために " " を書きましたが、 " " 内で呼び出されたQGraphicsTextItem場合にのみフォーカスが削除されます。MousePressEventQGraphicsView

ここでの私の懸念は、が呼び出されQGraphicsTextItemたときに this のフォーカスを削除する方法ですか?MousePressEventQGraphicsView

私のMainWindow.cppでは、関数を書きましたmousePressEvent:

void EyGuiMainWindow::mousePressEvent(QMouseEvent *e)
{
  QWidget *w = QApplication::focusWidget();
  if(w)
     w->clearFocus();
}

しかし、これはQGraphicsTextItem.

ポジティブな反応を期待しています。

4

1 に答える 1

1

QGraphicsTextItem はウィジェットではなく、QGraphicsItemです。グラフィックアイテムは QGraphicsScene に追加され、1 つ以上のQGraphicsViewウィジェットで表示されます。

提示されたコードは、現在フォーカスされているウィジェットでのみクリア フォーカスを呼び出していますが、QGraphicsTextItem はウィジェットではないため、クリアされません。

QGraphicsTextItem のフォーカスをクリアするには、clearFocus関数を呼び出します。アイテムへのポインターがない場合は、items()関数を使用してシーン内のすべてのアイテムのリストを取得し、それらを反復処理できます。

于 2014-10-27T13:22:23.237 に答える