0

グラフィカルなqtアプリケーションでは、QGraphicsItemから継承するオブジェクトがpaintメソッドにフォーカスされているかどうかを知ることができます。

Qtコード:

void MyQGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *)
{
if (option->state & QStyle::State_HasFocus) {
//if focus some shape

} else {
//if no focus another shape
}
}

しかし、私はそれをクリックする必要があり、焦点が合っているかどうかに関係なく形状を変更する必要があります。焦点を絞った情報を入手するにはどうすればよいですか

Qtコード:

QPainterPath QGraphicsItem::shape() const

適切な方法で方法?グローバル変数を宣言しようと思いますが、このアイデアは好きではありません。ありがとう

4

1 に答える 1

1

QGraphicsItem::hasFocus()を使用します。

この項目がアクティブで、項目またはそのフォーカス プロキシにキーボード入力フォーカスがある場合は true を返します。それ以外の場合は false を返します。

ちなみに、アイテムにフォーカスしたときに形状を変更したい場合は、focusInEvent() と focusOutEvent() をオーバーライドし、形状が変更される前に必ず prepareGeometryChange() を呼び出す必要があります。

于 2011-08-01T16:30:26.173 に答える