QGraphicsItem Class

QGraphicsItemクラスは、QGraphicsScene のすべてのグラフィカル・アイテムの基本クラスです。

Header: #include <QGraphicsItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherited By:

QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject, and QGraphicsPixmapItem

パブリック型

enum CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache }
enum GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, …, ItemScenePositionHasChanged }
enum GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, …, ItemContainsChildrenInShape }
flags GraphicsItemFlags
enum PanelModality { NonModal, PanelModal, SceneModal }
enum anonymous { Type, UserType }

パブリック関数

QGraphicsItem(QGraphicsItem *parent = nullptr)
virtual ~QGraphicsItem()
bool acceptDrops() const
bool acceptHoverEvents() const
bool acceptTouchEvents() const
Qt::MouseButtons acceptedMouseButtons() const
virtual void advance(int phase)
virtual QRectF boundingRect() const = 0
QRegion boundingRegion(const QTransform &itemToDeviceTransform) const
qreal boundingRegionGranularity() const
QGraphicsItem::CacheMode cacheMode() const
QList<QGraphicsItem *> childItems() const
QRectF childrenBoundingRect() const
void clearFocus()
QPainterPath clipPath() const
virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const
virtual bool contains(const QPointF &point) const
QCursor cursor() const
QVariant data(int key) const
QTransform deviceTransform(const QTransform &viewportTransform) const
qreal effectiveOpacity() const
void ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
bool filtersChildEvents() const
QGraphicsItem::GraphicsItemFlags flags() const
QGraphicsItem *focusItem() const
QGraphicsItem *focusProxy() const
void grabKeyboard()
void grabMouse()
QGraphicsEffect *graphicsEffect() const
QGraphicsItemGroup *group() const
bool hasCursor() const
bool hasFocus() const
void hide()
Qt::InputMethodHints inputMethodHints() const
void installSceneEventFilter(QGraphicsItem *filterItem)
bool isActive() const
bool isAncestorOf(const QGraphicsItem *child) const
bool isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
bool isClipped() const
bool isEnabled() const
bool isObscured(const QRectF &rect = QRectF()) const
bool isObscured(qreal x, qreal y, qreal w, qreal h) const
virtual bool isObscuredBy(const QGraphicsItem *item) const
bool isPanel() const
bool isSelected() const
bool isUnderMouse() const
bool isVisible() const
bool isVisibleTo(const QGraphicsItem *parent) const
bool isWidget() const
bool isWindow() const
QTransform itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
QPainterPath mapFromParent(const QPainterPath &path) const
QPointF mapFromParent(const QPointF &point) const
QPolygonF mapFromParent(const QPolygonF &polygon) const
QPolygonF mapFromParent(const QRectF &rect) const
QPolygonF mapFromParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromParent(qreal x, qreal y) const
QPainterPath mapFromScene(const QPainterPath &path) const
QPointF mapFromScene(const QPointF &point) const
QPolygonF mapFromScene(const QPolygonF &polygon) const
QPolygonF mapFromScene(const QRectF &rect) const
QPolygonF mapFromScene(qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromScene(qreal x, qreal y) const
QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromParent(const QRectF &rect) const
QRectF mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromScene(const QRectF &rect) const
QRectF mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToParent(const QRectF &rect) const
QRectF mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToScene(const QRectF &rect) const
QRectF mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
QPainterPath mapToParent(const QPainterPath &path) const
QPointF mapToParent(const QPointF &point) const
QPolygonF mapToParent(const QPolygonF &polygon) const
QPolygonF mapToParent(const QRectF &rect) const
QPolygonF mapToParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToParent(qreal x, qreal y) const
QPainterPath mapToScene(const QPainterPath &path) const
QPointF mapToScene(const QPointF &point) const
QPolygonF mapToScene(const QPolygonF &polygon) const
QPolygonF mapToScene(const QRectF &rect) const
QPolygonF mapToScene(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToScene(qreal x, qreal y) const
void moveBy(qreal dx, qreal dy)
qreal opacity() const
virtual QPainterPath opaqueArea() const
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) = 0
QGraphicsItem *panel() const
QGraphicsItem::PanelModality panelModality() const
QGraphicsItem *parentItem() const
QGraphicsObject *parentObject() const
QGraphicsWidget *parentWidget() const
QPointF pos() const
void removeSceneEventFilter(QGraphicsItem *filterItem)
void resetTransform()
qreal rotation() const
qreal scale() const
QGraphicsScene *scene() const
QRectF sceneBoundingRect() const
QPointF scenePos() const
QTransform sceneTransform() const
void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
void setAcceptDrops(bool on)
void setAcceptHoverEvents(bool enabled)
void setAcceptTouchEvents(bool enabled)
void setAcceptedMouseButtons(Qt::MouseButtons buttons)
void setActive(bool active)
void setBoundingRegionGranularity(qreal granularity)
void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
void setCursor(const QCursor &cursor)
void setData(int key, const QVariant &value)
void setEnabled(bool enabled)
void setFiltersChildEvents(bool enabled)
void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
void setFlags(QGraphicsItem::GraphicsItemFlags flags)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusProxy(QGraphicsItem *item)
void setGraphicsEffect(QGraphicsEffect *effect)
void setGroup(QGraphicsItemGroup *group)
void setInputMethodHints(Qt::InputMethodHints hints)
void setOpacity(qreal opacity)
void setPanelModality(QGraphicsItem::PanelModality panelModality)
void setParentItem(QGraphicsItem *newParent)
void setPos(const QPointF &pos)
void setPos(qreal x, qreal y)
void setRotation(qreal angle)
void setScale(qreal factor)
void setSelected(bool selected)
void setToolTip(const QString &toolTip)
void setTransform(const QTransform &matrix, bool combine = false)
void setTransformOriginPoint(const QPointF &origin)
void setTransformOriginPoint(qreal x, qreal y)
void setTransformations(const QList<QGraphicsTransform *> &transformations)
void setVisible(bool visible)
void setX(qreal x)
void setY(qreal y)
void setZValue(qreal z)
virtual QPainterPath shape() const
void show()
void stackBefore(const QGraphicsItem *sibling)
QGraphicsObject *toGraphicsObject()
const QGraphicsObject *toGraphicsObject() const
QString toolTip() const
QGraphicsItem *topLevelItem() const
QGraphicsWidget *topLevelWidget() const
QTransform transform() const
QPointF transformOriginPoint() const
QList<QGraphicsTransform *> transformations() const
virtual int type() const
void ungrabKeyboard()
void ungrabMouse()
void unsetCursor()
void update(const QRectF &rect = QRectF())
void update(qreal x, qreal y, qreal width, qreal height)
QGraphicsWidget *window() const
qreal x() const
qreal y() const
qreal zValue() const

保護された関数

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *event)
virtual void focusOutEvent(QFocusEvent *event)
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
virtual void keyPressEvent(QKeyEvent *event)
virtual void keyReleaseEvent(QKeyEvent *event)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void prepareGeometryChange()
virtual bool sceneEvent(QEvent *event)
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event)
void updateMicroFocus()
virtual void wheelEvent(QGraphicsSceneWheelEvent *event)
T qgraphicsitem_cast(QGraphicsItem *item)

詳細説明

独自のカスタムアイテムを書くための軽量な基盤を提供します。これには、アイテムのジオメトリの定義、衝突検出、ペイントの実装、イベントハンドラが介したアイテムのインタラクションが含まれます

利便性のために、Qtは最も一般的な図形のための標準グラフィックス・アイテムのセットを提供します。

アイテムの幾何情報はすべてローカル座標系に基づいています。アイテムの位置pos() は、親座標での位置を返すので、ローカル座標で操作しない唯一の関数です。座標系については「グ ラ フ ィ ッ ク ス表示座標系」 で詳 し く 説明 し てい ます。

setVisible ()を呼び出すことで、アイテムを表示するかどうか(つまり、描画するかどうか、イベントを受け付けるかどうか)を設定することができます。項目を非表示にすると、その子も非表示になります。同様に、setEnabled() を呼び出すと、項目を有効にしたり無効にしたりできます。項目を無効にすると、その子もすべて無効になります。デフォルトでは、アイテムは表示と有効の両方が可能です。項目が選択されているかどうかを切り替えるには、まずItemIsSelectable フラグを設定して選択を有効にし、それからsetSelected() を呼び出します。通常、選択はシーンによって、ユーザーとのインタラクションによって切り替えられます。

独自のグラフィック・アイテムを書くには、まずQGraphicsItemのサブクラスを作成し、その2つの純粋な仮想パブリック関数を実装することから始めます。boundingRect ()は、アイテムによって描画される領域の推定値を返し、paint ()は、実際の描画を実装します。例えば

class SimpleItem : public QGraphicsItem
{
public:
    QRectF boundingRect() const override
    {
        qreal penWidth = 1;
        return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
                      20 + penWidth, 20 + penWidth);
    }

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
               QWidget *widget) override
    {
        painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
    }
};

boundingRect() 関数にはさまざまな目的があります。QGraphicsScene はアイテムのインデックスをboundingRect() に基づき、QGraphicsView は不可視アイテムのカリングと、重なり合うアイテムを描画する際に再コンポジションが必要な領域を決定するために使用します。さらに、QGraphicsItem の衝突検出メカニズムは、boundingRect() を使用して効率的なカットオフを提供します。collidesWithItem() の細かい衝突アルゴリズムは、shape() を呼び出すことに基づいています。 () は、アイテムの形状の正確なアウトラインをQPainterPath として返します。

QGraphicsScene は、通知されない限り、すべてのアイテム () と () が変更されないことを期待する。アイテムの形状を何らかの方法で変更したい場合は、まず () を呼び出して、 が帳簿を更新できるようにする必要があります。boundingRect shape prepareGeometryChange QGraphicsScene

衝突検出は2つの方法で行うことができます:

  1. shape() を再実装してアイテムの正確な形状を返し、collidesWithItem() のデフォルト実装に依存して形状と形状の交差を行います。形状が複雑な場合、これはかなり高価になる可能性があります。
  2. collidesWithItem() を再実装して、独自のアイテムとシェイプの衝突アルゴリズムを提供しましょう。

contains() 関数を呼び出して、アイテムに点が含まれているかどうかを判定することができます。この関数は、アイテムによって再実装することもできます。contains() のデフォルトの動作は、shape() の呼び出しに基づいています。

アイテムは他のアイテムを含むことができ、また他のアイテムに含まれることもできる。すべてのアイテムは、親アイテムと子アイテムのリストを持つことができます。アイテムが親を持たない限り、その位置は親の座標(つまり親のローカル座標)になる。親アイテムは、その位置と変形の両方をすべての子に伝播します。

変形

QGraphicsItem は、基本位置pos() に加えて、射影変換をサポートしています。アイテムの変形を変更するには、いくつかの方法があります。単純な変換であれば、便利な関数setRotation() かsetScale() を呼び出すか、setTransform() に任意の変換行列を渡すことができます。高度な変換制御を行うには、setTransformations() を呼び出して、複数の変換を組み合わせて設定することもできます。

アイテムの変換は親から子へと累積されるので、親と子のアイテムの両方が 90 度回転すると、子の変換の合計は 180 度になります。同様に、アイテムの親が元のサイズの 2 倍に拡大縮小された場合、その子も 2 倍になります。アイテムの変形は、それ自身のローカルジオメトリには影響しません。すべてのジオメトリ関数(たとえば、contains ()、update ()、およびすべてのマッピング関数)は、依然としてローカル座標で動作します。便利なように、QGraphicsItem には、アイテムの全変換行列(アイテムの位置とすべての親の位置と変換を含む)を返す関数sceneTransform() と、シーン座標での位置を返す関数scenePos() が用意されています。アイテムの行列をリセットするには、resetTransform() を呼び出します。

特定のトランスフォーム操作は、適用する順序によって異なる結果を生成します。たとえば、トランスフォームを拡大縮小してから回転させると、トランスフォームを最初に回転させた場合とは異なる結果になることがあります。ただし、QGraphicsItem にトランスフォームのプロパティを設定する順序は、結果のトランスフォームには影響しません:

  • アイテムの基本トランスフォームが適用されます (transform())
  • アイテムの変換リストは、順番に適用されます (transformations())
  • アイテムは、そのトランスフォームの原点に対して相対的に回転されます (rotation(),transformOriginPoint())
  • アイテムは、そのトランスフォームの原点に対して相対的に拡大縮小されます (scale(),transformOriginPoint())

ペイント

paint() 関数は、QGraphicsView によって呼び出され、項目の内容を描画します。アイテムは、それ自身の背景やデフォルトの塗りつぶしを持っていません。アイテムの背後にあるものは何でも、この関数で明示的にペイントされていないすべての領域を照らします。update() を呼び出すと、再描画をスケジュールすることができます。オプションで、再描画が必要な矩形を渡すこともできます。QGraphicsItem にはQWidget::repaint() に相当するものはありません。

アイテムはビューによって描画され、親アイテムから始まり、昇順に子アイテムが描画されます。アイテムの積み重ね順序は、setZValue() を呼び出すことで設定でき、zValue() を呼び出すことでテストできます。重ね順は兄弟アイテムにも適用され、親アイテムは常に子アイテムの前に描かれます。

並べ替え

すべてのアイテムは定義された安定した順序で描画され、この同じ順序によって、シーンをクリックしたときにどのアイテムが最初にマウス入力を受けるかが決まります。アイテムはシーンの論理構造に従って「自然な順序」に従うので、通常はソートについて心配する必要はありません。

アイテムの子は親の上にスタックされ、兄弟アイテムは挿入順(つまり、シーンに追加された順、または同じ親に追加された順)にスタックされます。アイテム A を追加し、次に B を追加した場合、B は A の上になります。

この例では、Drag and Drop Robotの例から、ロボットのすべての手足の積み重ね順を示しています。胴体はルートアイテム(他のすべてのアイテムは胴体の子または子孫)なので、最初に描かれます。次に頭部が描かれます。頭部は胴体の子アイテムのリストの最初のアイテムだからです。次に左上の腕が描かれる。下腕は上腕の子なので、下腕が描かれ、続いて上腕の次の兄弟である右腕が描かれます。

上級者向けには、アイテムの並べ方を変更する方法がある:

  • アイテムに対してsetZValue() を呼び出すと、他の兄弟アイテムの上や下に明示的にスタックさせることができます。アイテムのデフォルトの Z 値は 0 です。同じ Z 値を持つアイテムは、挿入順でスタックされます。
  • stackBefore() を呼び出すと、子アイテムのリストを並べ替えることができます。これは挿入順序を直接変更します。
  • ItemStacksBehindParent フラグを設定すると、子アイテムを親の後ろに積み重ねることができます。

兄弟アイテムの重ね順は、各アイテムの子アイテムや子孫アイテムでもカウントされます。つまり、あるアイテムが他のアイテムの上にある場合、そのすべての子アイテムは他のアイテムのすべての子アイテムの上にもあります。

イベント

QGraphicsItem は、仮想関数sceneEvent() を通して、QGraphicsScene からのイベントを受け取ります。この関数は、最も一般的なイベントを一連の便利なイベント・ハンドラに分配します:

イベントフィルタをインストールすることで、その他の項目のイベントをフィルタリングすることができます。この機能は、QObject のサブクラスでのみ動作する Qt の通常のイベントフィルタ(QObject::installEventFilter() を参照)とは別のものです。installSceneEventFilter() を呼び出すことで、他のアイテムのイベントフィルタとしてアイテムをインストールした後、フィルタされたイベントは仮想関数sceneEventFilter() によって受け取られます。removeSceneEventFilter() を呼び出すと、アイテムのイベント・フィルタを削除できます。

カスタム・データ

カスタム・アイテムであれ標準アイテムであれ、アイテムにカスタム・データを登録すると便利なことがあります。どのアイテムでもsetData() を呼び出すと、キーと値のペア(キーは整数、値はQVariant )を使用してデータを保存できます。アイテムからカスタム・データを取得するには、data() を呼び出します。この機能は Qt 自身はまったく手をつけていません。

QGraphicsSceneQGraphicsView 、およびGraphics ViewFrameworkも参照してください

メンバ型ドキュメント

enum QGraphicsItem::CacheMode

この列挙型はQGraphicsItem のキャッシュモードを記述します。キャッシュは、オフスクリーンのピクセルバッファを割り当ててレンダリングすることで、レンダリングを高速化するために使用されます。一部のペイントデバイスでは、キャッシュはグラフィックメモリに直接格納され、レンダリングが非常に速くなります。

定数説明
QGraphicsItem::NoCache0デフォルトでは、すべてのアイテムのキャッシュは無効です。QGraphicsItem::paint() は、アイテムの再描画が必要になるたびに呼び出されます。
QGraphicsItem::ItemCoordinateCache1QGraphicsItem は、QGraphicsItem::setCacheMode() に渡すことができる、設定可能なサイズ/解像度のオフスクリーンピクセルバッファを作成します。キャッシュの解像度とアイテムのトランスフォームによって、レンダリングの品質は通常低下します。アイテムが最初に再描画されると、それ自体がキャッシュにレンダリングされます。キャッシュは、アイテムが変換されるときにも再利用されます。キャッシュの解像度を調整するには、setCacheMode ()を再度呼び出します。
QGraphicsItem::DeviceCoordinateCache2キャッシュは、ペイントデバイスレベルで、デバイス座標で有効になります。このモードは、移動はできるが、回転、拡大縮小、せん断はされないアイテムのためのものです。アイテムが直接または間接的に変換された場合、キャッシュは自動的に再生成されます。ItemCoordinateCacheModeとは異なり、DeviceCoordinateCacheは常に最高品質でレンダリングされます。

QGraphicsItem::setCacheMode()も参照してください

enum QGraphicsItem::GraphicsItemChange

この列挙型は、QGraphicsItem::itemChange ()によって通知される状態変更を記述します。状態が変化すると通知が送信され、場合によっては調整を行うことができます(詳細については、各変化のドキュメントを参照してください)。

注意:itemChange() の内部でQGraphicsItem 自体の関数を呼び出すと、特定の関数呼び出しによって不要な再帰が発生する可能性があるため、注意が必要である。例えば、setPos ()関数が再びitemChange (ItemPositionChange)を呼び出してしまうため、ItemPositionChange通知のitemChange ()内でsetPos ()を呼び出すことはできません。その代わりに、itemChange() から、新しく調整された位置を返すことができます。

定数説明
QGraphicsItem::ItemEnabledChange3アイテムの有効状態が変更される。アイテムが現在有効な場合、それは無効になり、その逆も同様です。value 引数は、新しい有効状態(すなわち、true または false)です。この通知はitemChange() の中でsetEnabled() を呼び出さないでください。代わりに、itemChange() から新しい状態を返すことができます。
QGraphicsItem::ItemEnabledHasChanged13アイテムの有効状態が変更されました。value 引数は、新しい有効状態(つまり、true または false)です。この通知は配信されるので、itemChange() の中でsetEnabled() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemPositionChange0アイテムの位置が変わる。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのローカル位置が親に対して相対的に変更された場合(つまり、setPos() やmoveBy() を呼び出した結果)に送られます。value 引数は新しい位置(つまり、QPointF )である。元の位置を取得するには、pos() を呼び出します。この通知が配信されるため、itemChange()の中でsetPos()またはmoveBy()を呼び出さないでください。代わりに、itemChange()から、調整された新しい位置を返すことができます。この通知の後、QGraphicsItem 、位置が変更された場合、直ちにItemPositionHasChanged通知を送信します。
QGraphicsItem::ItemPositionHasChanged9アイテムの位置が変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのローカル位置(親からの相対位置)が変更された後に送信されます。value引数は新しい位置(pos ()と同じ)であり、QGraphicsItem 、この通知の戻り値は無視される(すなわち、読み取り専用通知)。
QGraphicsItem::ItemTransformChange8アイテムの変換行列が変更された。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのローカル変換行列が変更された場合(つまり、setTransform() を呼び出した結果)に送信されます。value 引数は新しい行列(つまり、QTransform )です。古い行列を取得するには、transform ()を呼び出します。この通知が配信されるので、setTransform ()を呼び出したり、itemChange ()で変換プ ロパティを設定したりしないでください。代わりに、itemChange ()から新しい行列を返すことができます。変換プロパティを変更した場合、この通知は送信されません。
QGraphicsItem::ItemTransformHasChanged10アイテムの変換行列が変更されたのは、setTransform が呼び出されたか、変換プロパティのいずれかが変更されたためです。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのローカル変換行列が変更された後に送信されます。value 引数は新しい行列(transform ()と同じ)であり、QGraphicsItem はこの通知の戻り値を無視します(つまり、読み取り専用の通知)。
QGraphicsItem::ItemRotationChange28アイテムの回転プロパティが変更された。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの回転プロパティが変更された場合(つまり、setRotation() を呼び出した結果)に送信されます。value 引数は新しい回転(つまり double)です。古い回転を取得するには、rotation ()を呼び出します。この通知が配信されるため、itemChange() 内でsetRotation() を呼び出さないでください。代わりに、itemChange() から新しい回転を返すことができます。
QGraphicsItem::ItemRotationHasChanged29アイテムの rotation プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの回転プロパティが変更された後に送信されます。value引数は、新しい回転(すなわち、double)であり、QGraphicsItem は、この通知の戻り値を無視する(すなわち、読み取り専用通知)。この通知は配信されるので、itemChange() の中でsetRotation() を呼び出さないでください。
QGraphicsItem::ItemScaleChange30アイテムの scale プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの scale プロパティが変更された場合(つまり、setScale() を呼び出した結果)に送信されます。value 引数は新しいスケール(つまり double)です。古いスケールを取得するには、scale ()を呼び出します。この通知は配信されるため、itemChange() 内でsetScale() を呼び出さないでください。代わりに、itemChange() から新しいスケールを返すことができます。
QGraphicsItem::ItemScaleHasChanged31アイテムの scale プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの scale プロパティが変更された後に送信されます。value 引数は新しいスケール(つまり、double)です。QGraphicsItem は、この通知の戻り値を無視します(つまり、読み取り専用通知)。この通知は配信されるので、itemChange() の中でsetScale() を呼び出さないでください。
QGraphicsItem::ItemTransformOriginPointChange32アイテムのトランスフォーム原点プロパティが変更される。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのトランスフォーム原点プロパティが変更された場合(つまり、setTransformOriginPoint ()を呼び出した結果)に送信される。value 引数は新しい原点(つまり、QPointF )です。古い原点を取得するには、transformOriginPoint ()を呼び出します。この通知は配信されるため、itemChange() 内でsetTransformOriginPoint() を呼び出さないでください。代わりに、itemChange() から新しい変換原点を返すことができます。
QGraphicsItem::ItemTransformOriginPointHasChanged33アイテムの変換原点プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの変換原点プロパティが変更された後に送信されます。value 引数は、新しい原点(すなわち、QPointF )であり、QGraphicsItem は、この通知の戻り値を無視する(すなわち、読み取り専用通知)。この通知が配信されるので、itemChange ()の中でsetTransformOriginPoint ()をコールしないでください。
QGraphicsItem::ItemSelectedChange4アイテムの選択状態が変化する。アイテムが現在選択されている場合、それは非選択状態になり、その逆も同様です。value 引数は新しい選択状態(つまり、true または false)です。この通知はitemChange() 内で行われるので、setSelected() を呼び出さないでください。代わりに、itemChange() から新しい選択状態を返すことができます。
QGraphicsItem::ItemSelectedHasChanged14アイテムの選択状態が変更されました。value 引数は、新しい選択状態(つまり、true または false)です。この通知は配信されるので、itemChange() の中でsetSelected() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemVisibleChange2アイテムの可視状態が変化する。アイテムが現在可視状態であれば不可視状態になり、その逆であれば非可視状態になります。value 引数は新しい可視状態(つまり、true または false)です。この通知が配信されるので、itemChange() の中でsetVisible() を呼び出さないでください。代わりに、itemChange() から新しい可視状態を返すことができます。
QGraphicsItem::ItemVisibleHasChanged12アイテムの可視状態が変更されました。value 引数は、新しい可視状態(つまり、true または false)です。この通知は配信されるので、itemChange() の中でsetVisible() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemParentChange5アイテムの親が変わる。value 引数は、新しい親アイテム(つまり、QGraphicsItem ポインタ)です。この通知が配信されるので、itemChange() の中でsetParentItem() を呼び出さないでください。代わりに、itemChange() から新しい親を返すことができます。
QGraphicsItem::ItemParentHasChanged15アイテムの親が変更されました。value 引数は新しい親(つまり、QGraphicsItem へのポインタ)です。この通知は配信されるので、itemChange() の中でsetParentItem() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemChildAddedChange6この項目に子が追加されます。value 引数は新しい子項目(つまり、QGraphicsItem へのポインタ)です。この通知が配信されるとき、このアイテムをアイテムのsetParentItem() 関数に渡さないでください。戻り値は未使用です。この通知で何かを調整することはできません。この通知が送られるとき、新しい子は完全に構築されていないかもしれないことに注意してください; 子に対して純粋な仮想関数を呼び出すと、クラッシュにつながる可能性があります。
QGraphicsItem::ItemChildRemovedChange7子がこのアイテムから削除されます。value 引数は、削除されようとしている子アイテムです(つまり、QGraphicsItem ポインタ)。戻り値は未使用です。この通知で何かを調整することはできません。
QGraphicsItem::ItemSceneChange11アイテムは新しいシーンに移動される。このノーティフィケーションは、アイテムが最初のシーンに追加された時と、削除された時にも送られる。アイテムのscene() は古いシーンで、アイテムがまだシーンに追加されていない場合はnullptr です。value 引数は新しいシーン(すなわち、QGraphicsScene ポインタ)、またはアイテムがシーンから削除された場合はnullptr です。この通知が配信されるときに、このアイテムをQGraphicsScene::addItem() に渡して、この変更を上書きしないでください。代わりに、itemChange() から新しいシーンを返すことができます。シーンの変更に異議を唱えると、すぐに不要な再帰につながる可能性があります。
QGraphicsItem::ItemSceneHasChanged16アイテムのシーンが変更されました。アイテムのscene() が新しいシーンです。この通知は、アイテムがその最初のシーンに追加されたときと、削除されたときにも送られます。value 引数は、新しいシーン(つまり、QGraphicsScene へのポインタ)です。この通知が送られるので、itemChange() の中で setScene() をコールしないでください。戻り値は無視されます。
QGraphicsItem::ItemCursorChange17アイテムのカーソルが変わる。value 引数は、新しいカーソル(つまり、QCursor )です。この通知が配信されるので、itemChange() 内でsetCursor() を呼び出さないでください。代わりに、itemChange() から新しいカーソルを返すことができます。
QGraphicsItem::ItemCursorHasChanged18アイテムのカーソルが変更されました。value 引数は、新しいカーソル(つまり、QCursor )です。この通知は配信されるので、setCursor() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemToolTipChange19アイテムのツールチップが変更されました。value 引数は、新しいツールチップ(すなわち、QToolTip )である。この通知が配信されるので、itemChange() の中でsetToolTip() を呼び出さないでください。代わりに、itemChange() から新しいツールチップを返すことができる。
QGraphicsItem::ItemToolTipHasChanged20アイテムのツールチップが変更されました。value 引数は新しいツールチップ(すなわち、QToolTip )である。この通知は配信されるので、setToolTip() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemFlagsChange21アイテムのフラグが変更されました。value 引数は新しいフラグ(つまり quint32)です。この通知が配信されるので、itemChange() の中でsetFlags() を呼び出さないでください。代わりに、itemChange() から新しいフラグを返すことができます。
QGraphicsItem::ItemFlagsHaveChanged22項目のフラグが変更されました。value 引数は新しいフラグ(つまり quint32)です。この通知は配信されるので、itemChange() の中でsetFlags() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemZValueChange23アイテムのZ値が変更されます。value 引数は、新しい Z 値(つまり double)です。この通知が配信されるので、itemChange ()の中でsetZValue ()を呼び出さないでください。代わりに、itemChange() から新しいZ値を返すことができます。
QGraphicsItem::ItemZValueHasChanged24項目の Z 値が変更されました。value 引数は新しい Z 値(つまり double)です。この通知が配信されるので、setZValue() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemOpacityChange25アイテムの不透明度が変更されました。value 引数は新しい不透明度(つまり double)です。この通知が配信されるので、itemChange() の中でsetOpacity() をコールしないでください。代わりに、itemChange() から新しい不透明度を返すことができます。
QGraphicsItem::ItemOpacityHasChanged26アイテムの不透明度が変更されました。value 引数は新しい不透明度(つまり double)です。この通知は配信されるので、setOpacity() を呼び出さないでください。戻り値は無視されます。
QGraphicsItem::ItemScenePositionHasChanged27アイテムのシーン位置が変更されました。この通知は、ItemSendsScenePositionChanges フラグが有効で、アイテムのシーン位置が変更された(すなわち、アイテム自体の位置または変形、または任意の祖先の位置または変形が変更された)後に送信される。value引数は新しいシーン位置(scenePos ()と同じ)であり、QGraphicsItem 、この通知の戻り値は無視される(すなわち、読み取り専用通知)。

enum QGraphicsItem::GraphicsItemFlag
flags QGraphicsItem::GraphicsItemFlags

この列挙型は、アイテムの動作のさまざまな機能を切り替えるためにアイテムに設定できるさまざまなフラグを記述します。

デフォルトではすべてのフラグが無効になっている。

定数説明
QGraphicsItem::ItemIsMovable0x1マウスによるインタラクティブな移動をサポートします。アイテムをクリックしてドラッグすると、マウスカーソルと一緒にアイテムが移動します。アイテムが子アイテムを持つ場合、すべての子アイテムも移動します。項目が選択項目の一部であれば、選択されたすべての項目も移動する。この機能は、QGraphicsItem のマウス・イベント・ハンドラの基本実装によって、便宜的に提供されています。
QGraphicsItem::ItemIsSelectable0x2アイテムは選択をサポートしています。この機能を有効にすると、setSelected() でアイテムの選択を切り替えられるようになります。また、QGraphicsScene::setSelectionArea() を呼び出したり、項目をクリックしたり、QGraphicsView でラバーバンド選択を使用した結果、項目が自動的に選択されるようになります。
QGraphicsItem::ItemIsFocusable0x4項目はキーボード入力フォーカスをサポートしている(つまり、入力項目である)。このフラグを有効にすると、アイテムがフォーカスを受け付けるようになり、QGraphicsItem::keyPressEvent() とQGraphicsItem::keyReleaseEvent() へのキーイベントの配信が可能になります。
QGraphicsItem::ItemClipsToShape0x8アイテムはそれ自身のシェイプにクリップします。アイテムは、そのシェイプの外に描画したり、マウス、タブレット、ドラッグ&ドロップ、ホバーイベントを受け取ることはできません。デフォルトでは無効になっています。この動作は、QGraphicsView::drawItems() または QGraphicsScene::drawItems() によって強制されます。このフラグは Qt 4.3 で導入されました。
QGraphicsItem::ItemClipsChildrenToShape0x10アイテムは、すべての子孫のペイントを自身のシェイプにクリップします。このアイテムの直接または間接的な子であるアイテムは、このアイテムのシェイプの外側に描画できません。デフォルトでは、このフラグは無効になっており、子アイテムはどこにでも描画できます。この動作は、QGraphicsView::drawItems() または QGraphicsScene::drawItems() によって強制されます。このフラグは Qt 4.3 で導入されました。

注意: このフラグは、ItemContainsChildrenInShape に似ていますが、子要素をクリッピングすることによって、子要素の包含を強制します。

定数説明
QGraphicsItem::ItemIgnoresTransformations0x20アイテムは継承されたトランスフォームを無視します(つまり、その位置は親に固定されたままですが、親やビューの回転、ズーム、シアのトランスフォームは無視されます)。このフラグは、テキストラベルアイテムを水平に保ち、拡大縮小しない場合に便利で、ビューが変換されても読むことができる。このフラグが設定されていると、アイテムのビューのジオメトリとシーンのジオメトリは別々に維持されます。座標をマッピングし、ビューの衝突を検出するには、deviceTransform() を呼び出す必要があります。デフォルトでは、このフラグは無効になっています。このフラグは Qt 4.3 で導入されました。

注意: このフラグを設定しても、アイテム自体をスケールすることができ、そのスケール変換はアイテムの子に影響を与えます。

定数説明
QGraphicsItem::ItemIgnoresParentOpacity0x40アイテムは親の不透明度を無視します。アイテムの有効な不透明度はそれ自身と同じである。このフラグにより、親が半透明であっても、アイテムはその絶対的な不透明度を保つことができます。このフラグは Qt 4.5 で導入されました。
QGraphicsItem::ItemDoesntPropagateOpacityToChildren0x80アイテムはその不透明度を子に伝搬しません。このフラグにより、子アイテムの不透明度に影響を与えない半透明アイテムを作成できます。このフラグは Qt 4.5 で導入されました。
QGraphicsItem::ItemStacksBehindParent0x100アイテムは親の後ろにスタックされます。デフォルトでは、子アイテムは親アイテムの上に積み重ねられます。しかし、このフラグを設定すると、子アイテムは親アイテムの後ろにスタックされます。このフラグは、ドロップシャドウ効果や、親アイテムの上に描画せずに親アイテムのジオメトリに従う装飾オブジェクトに便利です。このフラグは Qt 4.5 で導入されました。
QGraphicsItem::ItemUsesExtendedStyleOption0x200exposedRect QStyleOptionGraphicsItemデフォルトでは、exposedRect はアイテムのboundingRect() に初期化されます。このフラグを有効にすると、スタイル・オプションをより細かい値で設定できます。より大きな値が必要な場合は、QStyleOptionGraphicsItem::levelOfDetailFromTransform() を使用してください。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemHasNoContents0x400アイテムは何も描画しません (つまり、アイテムに対してpaint() を呼び出しても何の効果もありません)。Graphics View が不必要な描画準備を避けるために、描画する必要のないアイテムにこのフラグを設定する必要があります。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemSendsGeometryChanges0x800ItemPositionChange,ItemPositionHasChanged,ItemTransformChange,ItemTransformHasChanged,ItemRotationChange,ItemRotationHasChanged,ItemScaleChange,ItemScaleHasChanged,ItemTransformOriginPointChange,ItemTransformOriginPointHasChangeditemChange() 通知を有効にします。パフォーマンス上の理由から、これらの通知はデフォルトでは無効になっています。位置やトランスフォームの変更の通知を受け取るには、このフラグを有効にする必要があります。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemAcceptsInputMethod0x1000この項目は、アジア言語で一般的に使用される入力メソッドをサポートします。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemNegativeZStacksBehindParent0x2000z 値が負の場合、アイテムは自動的に親の後ろにスタックします。このフラグにより、setZValue() で ItemStacksBehindParent を切り替えることができます。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemIsPanel0x4000アイテムはパネルです。パネルは、アクティブ化と含まれるフォーカスの処理を提供します。一度にアクティブにできるパネルは1つだけです(QGraphicsItem::isActive ()を参照)。パネルがアクティブでない場合、QGraphicsScene はパネル以外のすべてのアイテムをアクティブにします。ウィンドウ・アイテム(すなわち、QGraphicsItem::isWindow() はtrue を返します)はパネルです。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemSendsScenePositionChanges0x10000このアイテムは、ItemScenePositionHasChanged に対するitemChange() 通知を有効にします。パフォーマンス上の理由から、これらの通知はデフォルトでは無効になっています。シーン位置の変更の通知を受け取るには、このフラグを有効にする必要があります。このフラグは Qt 4.6 で導入されました。
QGraphicsItem::ItemContainsChildrenInShape0x80000このフラグは、アイテムのすべての直接または間接の子が、アイテムのシェイプ内にのみ描画することを示します。ItemClipsChildrenToShape とは異なり、この制限は強制されません。描画がアイテムのシェイプに拘束されることを手動で保証し、クリップの強制に関連するコストを回避したい場合は、ItemContainsChildrenInShape を設定します。このフラグを設定すると、より効率的な描画と衝突検出が可能になります。デフォルトでは、このフラグは無効になっています。

注意: このフラグと ItemClipsChildrenToShape の両方が設定されている場合、クリップが強制されます。これは、ItemClipsChildrenToShape を設定するのと同じです。

このフラグは Qt 5.4 で導入されました。

GraphicsItemFlags 型はQFlags<GraphicsItemFlag> の typedef です。これは、GraphicsItemFlag の値の OR の組み合わせを格納します。

enum QGraphicsItem::PanelModality

この列挙型は、モーダルパネルの動作を指定します。モーダルパネルとは、他のパネルへの入力をブロックするパネルである。モーダルパネルの子であるアイテムはブロックされないことに注意。

値は

定数説明
QGraphicsItem::NonModal0パネルはモーダルではなく、他のパネルへの入力をブロックしません。これはパネルのデフォルト値です。
QGraphicsItem::PanelModal1パネルは、単一のアイテム階層に対してモーダルで、その親ペイン、すべての祖父母パネル、およびその親と祖父母パネルのすべての兄弟への入力をブロックします。
QGraphicsItem::SceneModal2ウィンドウはシーン全体に対してモーダルで、すべてのパネルへの入力をブロックします。

QGraphicsItem::setPanelModality()、QGraphicsItem::panelModality()、QGraphicsItem::ItemIsPanelも参照

enum QGraphicsItem::anonymous

Qt の標準グラフィックス・アイテム・クラスの仮想type() 関数によって返される値。例えば、QGraphicsPathItem::type() が返す値は 2 です。

定数説明
QGraphicsItem::Type1
class QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
 public:
  enum { Type = 2 };
    int type() const override { return Type; }
  ...
};
QGraphicsItem::UserType65536QGraphicsItem のカスタム・サブクラスの仮想type() 関数によって返される最低値。
class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

メンバ関数ドキュメント

[explicit] QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)

与えられたparent アイテムで QGraphicsItem を構築します。この関数は、QObject::parent() によって返された親オブジェクトを変更しません。

parentnullptr の場合、QGraphicsScene::addItem() を呼び出すことで、アイテムをシーンに追加できます。このアイテムは、トップレベルのアイテムになります。

QGraphicsScene::addItem() およびsetParentItem()も参照してください

[virtual noexcept] QGraphicsItem::~QGraphicsItem()

QGraphicsItem とそのすべての子を破棄します。このアイテムが現在シーンに関連付けられている場合、アイテムが削除される前にシーンから削除されます。

注意: アイテムを破棄する前に、QGraphicsScene からアイテムを削除する方が効率的です。

bool QGraphicsItem::acceptDrops() const

このアイテムがドラッグアンドドロップイベントを受け付ける場合はtrue を返し、そうでない場合はfalse を返します。デフォルトでは、アイテムはドラッグ&ドロップイベントを受け付けません。

setAcceptDrops()も参照してください

bool QGraphicsItem::acceptHoverEvents() const

アイテムがホバーイベント (QGraphicsSceneHoverEvent) を受け付ける場合はtrue を返し、そうでない場合はfalse を返します。デフォルトでは、アイテムはホバーイベントを受け付けません。

setAcceptHoverEvents() およびsetAcceptedMouseButtons() も参照して ください。

bool QGraphicsItem::acceptTouchEvents() const

アイテムがtouch events を受け入れる場合はtrue を返し、そうでない場合はfalse を返します。デフォルトでは、アイテムはタッチイベントを受け付けません。

setAcceptTouchEvents() も参照

Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const

このアイテムがマウスイベントを受け付けるマウスボタンを返します。デフォルトでは、すべてのマウスボタンが受け付けられます。

アイテムがマウスボタンを受け付ける場合、そのマウスボタンに対してマウス押下イベントが送られると、そのアイテムはマウスグラバーアイテムになります。しかし、アイテムがボタンを受け入れない場合、QGraphicsScene は、その下にある、ボタンを受け付ける最初のアイテムにマウスイベントを転送します。

setAcceptedMouseButtons() とmousePressEvent()も参照

[virtual] void QGraphicsItem::advance(int phase)

この仮想関数は、QGraphicsScene::advance() スロットによって、すべてのアイテムに対して2回呼び出される。最初のフェーズでは、すべてのアイテムがphase == 0 で呼び出され、シーン上のアイテムが前進しようとしていることを示し、次にすべてのアイテムがphase == 1 で呼び出されます。単純なシーン制御アニメーションが必要な場合は、この関数を再実装してアイテムを更新してください。

デフォルトの実装は何もしません。

この関数はアニメーション用です。別の方法としては、QObjectQGraphicsItem を多重継承し、アニメーションフレームワークを使用することです。

QGraphicsScene::advance() およびQTimeLineも参照してください

[pure virtual] QRectF QGraphicsItem::boundingRect() const

この純粋仮想関数は、アイテムの外側の境界を矩形として定義します。すべてのペイントは、アイテムの境界矩形の内側に制限されなければなりません。QGraphicsView は、アイテムの再描画が必要かどうかを判断するためにこれを使用します。

アイテムの形状は任意であるが、外接矩形は常に矩形であり、アイテムの変形の影響を受けない。

アイテムの外接矩形を変更したい場合は、まずprepareGeometryChange() を呼び出す必要があります。そうしないと、シーンはアイテムの新しいジオメトリに気づかず、結果は未定義になります(通常、レンダリングアーチファクトがビュー内に残ります)。

この関数を再実装して、ウィジェットのどの部分を再描画する必要があるかをQGraphicsView に判断させます。

注意: アウトライン / ストロークを描くシェイプの場合、バウンディング rect にペン幅の半分を含めることが重要です。ただし、アンチエイリアスを補正する必要はありません。

QRectF CircleItem::boundingRect() const
{
    qreal penWidth = 1;
    return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
                  diameter + penWidth, diameter + penWidth);
}

boundingRegion(),shape(),contains(),The Graphics View Coordinate System,prepareGeometryChange()も参照

QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const

この項目の外接領域を返 し ます。返 さ れ る 領域の座標空間はitemToDeviceTransform に依存 し ます。identityQTransform をパ ラ メ タ と し て渡す と 、 こ の関数は ロ ーカル座標領域を返 し ます。

外接領域は、 アイ テムの視覚的内容の粗い輪郭を表 し ます。計算にはコストがかかりますが、boundingRect() よりも正確で、アイテムの更新時に不要な再描画を避けることができます。これは特に細いアイテム(線や単純な多角形など)に対して効率的です。setBoundingRegionGranularity() を呼び出すことで、境界領域の粒度を調整することができます。デフ ォル ト の粒度は 0 です。 こ の場合、 ア イ テムの外接領域はその外接矩形 と 同 じ にな り ます。

itemToDeviceTransform はアイテム座標からデバイス座標への変換です。この関数がシーン座標で を返すようにしたい場合は、引数として () を渡すことができます。QRegion sceneTransform

boundingRegionGranularity()も参照してください

qreal QGraphicsItem::boundingRegionGranularity() const

デフォルト値は 0(すなわち、境界領域がアイテムの境界矩形に対応する最小の粒度)です。

setBoundingRegionGranularity()も参照してください

QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const

この項目のキャッシュモードを返します。デフォルトのモードはNoCache です (つまり、キャッシュは無効で、すべてのペイントは即時実行されます)。

setCacheMode()も参照して ください。

QList<QGraphicsItem *> QGraphicsItem::childItems() const

このアイテムの子アイテムのリストを返します。

アイテムは積み重ね順でソートされます。これは、アイテムの挿入順と Z 値の両方を考慮したものです。

setParentItem(),zValue(),Sortingも参照してください

QRectF QGraphicsItem::childrenBoundingRect() const

このアイテムの子孫(すなわち、その子やその子など)の外接矩形をローカル座標で返します。この矩形は、ローカル座標にマップされた後のすべての子孫を含みます。アイテムに子がない場合、この関数は空のQRectF を返します。

こ れは、 こ のア イ テ ム自身の外接矩形を含まず、 その子孫の累積外接矩形のみを返し ます。このアイテムの外接矩形を含める必要がある場合は、QRectF::operator|() を使用して childrenBoundingRect() にboundingRect() を追加できます。

この関数は、すべての子孫を繰り返し処理することで、返される外接矩形のサイズを決定します。

boundingRect() およびsceneBoundingRect()も参照してください

void QGraphicsItem::clearFocus()

アイテムからキーボード入力フォーカスを取ります。

フォーカスがある場合、focus out event がこのアイテムに送られ、フォーカスが失われようとしていることを伝えます。

ItemIsFocusable フラグを設定したアイテム、または適切なフォーカス・ポリシーを設定したウィジェットだけが、キーボード・フォーカスを受け付けることができます。

setFocus(),hasFocus(),QGraphicsWidget::focusPolicyも参照してください

QPainterPath QGraphicsItem::clipPath() const

このアイテムのクリップパス、またはこのアイテムがクリップされていない場合は空のQPainterPath を返します。クリップパスは、アイテムの外観とインタラクションを制限します(つまり、アイテムが描画できる領域とイベントを受け取る領域を制限します)。

ItemClipsToShape またはItemClipsChildrenToShape フラグを設定することで、クリッピングを有効にできます。アイテムのクリップパスは、すべてのクリッピング先祖のシェイプを交差させて計算されます。アイテムがItemClipsToShape を設定している場合、最終的なクリップはアイテム自身のシェイプと交差します。

注意: クリッピングは、関係するすべてのアイテムにパフォーマンス上のペナルティをもたらします。できる限りクリッピングの使用は避けるべきです (たとえば、アイテムが常にboundingRect() やshape() の境界の内側に描画される場合、クリッピングは必要ありません)。

isClipped()、shape()、setFlags()も参照して ください。

[virtual] bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

このアイテムがother と衝突する場合はtrue を返し、衝突しない場合はfalse を返します。

modeother に適用され、その結果の形状または外接矩形が、このアイテムの形状と比較される。mode のデフォルト値はQt::IntersectsItemShape である。other は、このアイテムの shape と交差するか、このアイテムの shape を含むか、またはこのアイテムの shape に含まれる場合に、このアイテムと衝突する (詳細はQt::ItemSelectionMode を参照)。

デフォルトの実装はシェイプの交差に基づいており、両方のアイテムでshape() を呼び出す。任意のシェイプとシェイプの交差の複雑さは、シェイプが複雑になると桁違いに大きくなるため、この操作には著しく時間がかかります。この関数をQGraphicsItem のサブクラスで再実装し、カスタムアルゴリズムを提供するオプションがあります。これにより、衝突検出のパフォーマンスを向上させるために、独自のアイテムの形状の自然な制約を利用することができます。たとえば、2つの変形されていない完全な円形のアイテムの衝突は、それらの位置と半径を比較することによって、非常に効率的に決定することができます。

この関数を再実装し、other 上でshape() やboundingRect() を呼び出す場合、返される座標は、交差が起こる前にこのアイテムの座標系にマップされていなければならないことに注意してください。

contains() およびshape()も参照

[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

この項目がpath と衝突した場合はtrue を返す。

衝突はmode によって決定されます。mode のデフォルト値はQt::IntersectsItemShape である。path は、このアイテムの形状と交差するか、このアイテムの形状を含むか、またはこのアイテムの形状に含まれる場合に、このアイテムと衝突する。

こ の関数は、 アイ テムの形状ま たは外接矩形 (mode に依存) がpath に含まれているかど う かを調べるのであって、path がアイテムの形状ま たは外接矩形に含まれているかど う かを調べるのではないことに注意 し て く だ さ い。

collidesWithItem()、contains()、shape()も参照

QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

このアイテムと衝突するすべてのアイテムのリストを返します。

衝突の検出方法は、このアイテムと比較されるアイテムにmode を適用することによって決定されます。つまり、各アイテムのシェイプまたは境界矩形は、このアイテムのシェイプと照合されます。mode のデフォルト値はQt::IntersectsItemShape です。

collidesWithItem()も参照して ください。

QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const

このアイテムとother の最も近い共通の祖先アイテムを返します。othernullptr であるか、共通の祖先がない場合はnullptr を返します。

isAncestorOf()も参照

[virtual] bool QGraphicsItem::contains(const QPointF &point) const

このアイテムがローカル座標のpoint を含んでいる場合はtrue を返し、そうでない場合は false を返します。この関数は、QGraphicsView から呼び出され、カーソルの下にどのアイテムがあるかを判断することが最も多く、そのため、この関数の実装は可能な限り軽量であるべきです。

デフォルトでは、この関数はshape() を呼び出しますが、サブクラスで再実装して(おそらくより効率的な)実装を提供することができます。

shape()、boundingRect()、collidesWithPath()も参照

[virtual protected] void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)

このイベント・ハンドラは、コンテキスト・メニュー・イベントを処理するためにサブクラスで再実装することができます。event パラメータには、処理するイベントの詳細が含まれます。

イベントを無視した場合(つまり、QEvent::ignore ()を呼び出した場合)、event はこのアイテムの下にあるすべてのアイテムに伝搬します。イベントを受け入れるアイテムがない場合は、シーンによって無視され、ビューに伝搬されます。

コンテキストメニューイベントの受信に応答して、QMenu を開くのが一般的です。例

void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QMenu menu;
    QAction *removeAction = menu.addAction("Remove");
    QAction *markAction = menu.addAction("Mark");
    QAction *selectedAction = menu.exec(event->screenPos());
    // ...
}

デフォルトの実装では、イベントは無視されます。

sceneEvent()も参照してください

QCursor QGraphicsItem::cursor() const

アイテムの現在のカーソル形状を返します。マウスカーソルがこのアイテムの上にあるとき、カーソルはこの形になります。便利な形状はlist of predefined cursor objects を参照してください。

エディタ項目はIビームカーソルを使用したいかもしれません:

item->setCursor(Qt::IBeamCursor);

カーソルが設定されていない場合、下のアイテムのカーソルが使用されます。

setCursor()、hasCursor()、unsetCursor()、QWidget::cursorQGuiApplication::overrideCursor()も参照してください

QVariant QGraphicsItem::data(int key) const

key キーに対するこの項目のカスタム・データをQVariant として返します。

カスタム項目データは、任意の項目に任意のプロパティを格納するのに便利です。例

static const int ObjectName = 0;

QGraphicsItem *item = scene.itemAt(100, 50);
if (item->data(ObjectName).toString().isEmpty()) {
    if (qgraphicsitem_cast<ButtonItem *>(item))
        item->setData(ObjectName, "Button");
}

Qt はこの機能をデータの保存には使用しません。

setData()も参照してください

QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const

シーンからデバイス座標へのマッピングにviewportTransform を使用して、このアイテムのデバイス変換行列を返します。この行列は、このアイテムのローカル座標系からビューポートの(または任意のデバイスの)座標系に座標や幾何学的形状をマッピングするために使用することができます。ビューポートから座標をマップするには、最初に返された行列を反転する必要があります。

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0));
// returns the item's (0, 0) point in view's viewport coordinates

rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100));
// returns view's viewport's (100, 100) coordinate in item coordinates

この関数は、このアイテムのシーントランスフォームをビューのビューポートトランスフォームと組み合わせるのと同じですが、ItemIgnoresTransformations フラグも理解します。デバイスのトランスフォームは、トランスフォームできないアイテムの正確な座標マッピング(および衝突検出)を行うために使用できます。

transform(),setTransform(),scenePos(),The Graphics View Coordinate System,itemTransform()も参照してください

[virtual protected] void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)

このイベントハンドラ(イベントevent )は、このアイテムのドラッグ入力イベントを受け取るために再実装することができます。ドラッグ入力イベントは、カーソルがアイテムの領域に入ると発生します。

このイベントを受け入れる(つまり、QEvent::accept() を呼び出す)ことで、アイテムは、ドラッグ移動とドラッグ離脱を受け取ることに加えて、ドロップイベントも受け入れるようになります。そうでない場合、イベントは無視され、下のアイテムに伝搬します。イベントが受け入れられた場合、制御がイベントループに戻る前に、アイテムはドラッグ移動イベントを受け取ります。

dragEnterEventの一般的な実装では、event の関連するmimeデータに応じて、event を受け入れるか無視します。例

CustomItem::CustomItem()
{
    setAcceptDrops(true);
    ...
}

void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
    event->setAccepted(event->mimeData()->hasFormat("text/plain"));
}

この機能を有効にするには、setAcceptDrops(true) を呼び出します。

デフォルトの実装では何もしません。

dropEvent()、dragMoveEvent()、dragLeaveEvent()も参照してください

[virtual protected] void QGraphicsItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)

このイベントハンドラのイベントevent は、このアイテムのドラッグ・リーブ・イベントを受け取るように再実装できます。ドラッグ・リーブ・イベントは、カーソルがアイテムの領域から離れると発生します。ほとんどの場合、この関数を再実装する必要はありませんが、アイテムの状態(ハイライトなど)をリセットするのに便利です。

event に対してQEvent::ignore() やQEvent::accept() を呼び出しても効果はありません。

この機能を有効にするには、setAcceptDrops(true) を呼び出します。

デフォルトの実装では何もしません。

dragEnterEvent()、dropEvent()、dragMoveEvent()も参照してください

[virtual protected] void QGraphicsItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)

このイベントハンドラ(イベントevent )は、このアイテムのドラッグ移動イベントを受け取るように再実装できます。ドラッグ移動イベントは、カーソルがアイテムの領域内を移動するときに発生します。ほとんどの場合、この関数を再実装する必要はありません。この関数は、アイテムの一部だけがドロップを受け付けることを示すために使用します。

eventQEvent::ignore() またはQEvent::accept() を呼び出すと、アイテムがイベントからの位置でドロップを受け付けるかどうかが切り替わります。デフォルトでは、event が受け付けられ、アイテムが指定された位置でのドロップを許可することを示します。

この機能を有効にするには、setAcceptDrops(true) を呼び出します。

デフォルトの実装では何もしません。

dropEvent(),dragEnterEvent(),dragLeaveEvent()も参照してください

[virtual protected] void QGraphicsItem::dropEvent(QGraphicsSceneDragDropEvent *event)

このイベントハンドラのイベントevent は、このアイテムのドロップイベントを受け取るように再実装できます。アイテムがドロップイベントを受け取れるのは、最後のドラッグ移動イベントが受け入れられた場合のみです。

event 上でQEvent::ignore() やQEvent::accept() を呼び出しても効果はありません。

この機能を有効にするには、setAcceptDrops(true) を呼び出します。

デフォルトの実装では何もしません。

dragEnterEvent()、dragMoveEvent() およびdragLeaveEvent()も参照して ください。

qreal QGraphicsItem::effectiveOpacity() const

この項目の実効不透明度を返します。0.0(透明)から 1.0(不透明)の間です。この値は、このアイテムのローカルな不透明度と、その親と祖先の不透明度の組み合わせです。効果的な不透明度は、アイテムがどのようにレンダリングされるかを決定します。

opacity(),setOpacity(),paint(),ItemIgnoresParentOpacity,ItemDoesntPropagateOpacityToChildrenも参照してください

void QGraphicsItem::ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)

このアイテムが、QGraphicsView によって表示されるシーンの一部である場合、この便利な関数は、rect がビューのビューポート内に表示されるように、ビューのスクロールを試みます。rect が null rect(デフォルト)である場合、QGraphicsItem はアイテムの外接 rect をデフォルトとします。xmarginymargin は、ビューがマージンに使用すべきピクセル数です。

指定された rect に到達できない場合、コンテンツは最も近い有効な位置にスクロールされます。

このアイテムがQGraphicsView で表示されていない場合、この関数は何もしない。

QGraphicsView::ensureVisible()も参照してください

void QGraphicsItem::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)

この便宜関数は、 ensureVisible(QRectF(x,y,w,h),xmargin,ymargin) を呼び出すのと等価である。

bool QGraphicsItem::filtersChildEvents() const

このアイテムが子イベントをフィルタリングする(つまり、子イベントのいずれかを対象としたすべてのイベントが、代わりにこのアイテムに送られる)場合はtrue を返し、そうでない場合は false を返す。

デフォルト値は false で、子イベントはフィルタリングされません。

setFiltersChildEvents()も参照してください

QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const

このアイテムのフラグを返します。フラグは、アイテムのどの設定可能な機能が有効か無効かを表します。たとえば、フラグにItemIsFocusable が含まれている場合、アイテムは入力フォーカスを受け付けることができます。

デフォルトでは、フラグは有効になっていません。

setFlags() およびsetFlag()も参照してください

[virtual protected] void QGraphicsItem::focusInEvent(QFocusEvent *event)

イベントevent に対するこのイベント・ハンドラは、このアイテムのイベントでフォーカスを受け取るために再実装することができます。デフォルトの実装ではensureVisible() を呼び出します。

focusOutEvent()、sceneEvent()、setFocus()も参照してください

QGraphicsItem *QGraphicsItem::focusItem() const

このアイテム、このアイテムの子アイテム、または子孫アイテムが現在入力フォーカスを持っている場合、この関数はそのアイテムへのポインタを返します。子孫に入力フォーカスがない場合は、nullptr が返される。

hasFocus()、setFocus()、QWidget::focusWidget()も参照

[virtual protected] void QGraphicsItem::focusOutEvent(QFocusEvent *event)

イベントevent に対するこのイベント・ハンドラは、この項目のフォーカス・アウト・イベントを受け取るために再実装することができる。デフォルトの実装は何もしません。

focusInEvent()、sceneEvent()、setFocus()も参照

QGraphicsItem *QGraphicsItem::focusProxy() const

このアイテムのフォーカス・プロキシ、またはこのアイテムにフォーカス・プロキシがない場合はnullptr を返します。

setFocusProxy()、setFocus()、hasFocus()も参照

void QGraphicsItem::grabKeyboard()

キーボード入力をつかむ。

アイテムは、以下のイベントのいずれかが発生するまで、シーンへのすべてのキーボード入力を受け取ります:

  • アイテムが不可視になる
  • アイテムがシーンから削除される
  • アイテムが削除される
  • アイテムがungrabKeyboard() を呼び出す
  • 他のアイテムが grabKeyboard() を呼び出す。他のアイテムがungrabKeyboard() を呼び出すと、アイテムはキーボードグラブを取り戻す。

アイテムがキーボードグラブを獲得すると、QEvent::GrabKeyboard イベントを受け取ります。キーボード・グラブを失うと、QEvent::UngrabKeyboard イベントを受け取ります。これらのイベントは、入力フォーカスを得る以外の方法で、アイテムがキーボードグラブを得たり失ったりしたことを検出するために使用できます。

Qtはキーボードを感覚的に掴んだり離したりするので、Qtで明示的にキーボードを掴む必要はほとんどありません。特に、Qtはアイテムが入力フォーカスを得た時にキーボードをつかみ、アイテムが入力フォーカスを失った時やアイテムが隠された時にキーボードを離します。

キーボード入力を取得できるのは可視アイテムだけであることに注意してください。不可視のアイテムに対してgrabKeyboard()を呼び出しても効果はありません。

キーボード・イベントは影響を受けません。

ungrabKeyboard(),grabMouse(),setFocus()も参照して ください。

void QGraphicsItem::grabMouse()

マウス入力をつかみます。

このアイテムは、以下のイベントのいずれかが発生するまで、シーンのすべてのマウスイベントを受け取ります:

  • アイテムが不可視になる。
  • アイテムがシーンから削除される。
  • アイテムが削除される
  • アイテムがungrabMouse() を呼び出す
  • 他のアイテムが grabMouse() を呼び出す。他のアイテムがungrabMouse() を呼び出すと、アイテムはマウス・グラブを取り戻す。

アイテムがマウスグラブを獲得すると、QEvent::GrabMouse イベントを受け取ります。マウス・グラブを失うと、QEvent::UngrabMouse イベントを受け取ります。これらのイベントは、マウスボタンイベントを受信する以外の方法で、アイテムがマウスグラブを得たり失ったりするタイミングを検出するために使用することができます。

Qtはマウスを感覚的に掴んだり離したりするので、Qtで明示的にマウスを掴む必要はほとんどありません。特に、Qt はマウスボタンを押すとマウスを掴み、最後のマウスボタンを離すまで掴んだ状態を維持します。また、Qt::Popup ウィジェットは、表示されているときは暗黙的に grabMouse() を呼び出し、非表示のときはungrabMouse() を呼び出します。

マウス入力をつかむことができるのは、表示されているアイテムだけであることに注意してください。不可視のアイテムでgrabMouse()を呼び出しても、何の効果もありません。

キーボード・イベントは影響を受けません。

QGraphicsScene::mouseGrabberItem(),ungrabMouse(),grabKeyboard()も参照

QGraphicsEffect *QGraphicsItem::graphicsEffect() const

このアイテムのエフェクトがあればそのポインタを返し、なければnullptr を返す。

setGraphicsEffect() も参照

QGraphicsItemGroup *QGraphicsItem::group() const

このアイテムのアイテムグループへのポインタを返します。グループのメンバーでない場合はnullptr を返します。

setGroup()、QGraphicsItemGroup 、およびQGraphicsScene::createItemGroup() も参照

bool QGraphicsItem::hasCursor() const

このアイテムにカーソルが設定されている場合はtrue を返し、そうでない場合は false を返します。

デフォルトでは、アイテムにはカーソルが設定されていません。cursor() は、標準的なポインティング・アロー・カーソルを返します。

unsetCursor()も参照

bool QGraphicsItem::hasFocus() const

このアイテムがアクティブで、そのアイテムまたはfocus proxy にキーボード入力フォーカスがある場合はtrue を返し、そうでない場合はfalse を返します。

focusItem()、setFocus()、QGraphicsScene::setFocusItem()、isActive()も参照

void QGraphicsItem::hide()

アイテムを非表示にします(アイテムはデフォルトで表示されます)。

この便利関数は、setVisible(false) を呼び出すのと同じです。

show() およびsetVisible()も参照してください

[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)

このイベントハンドラ(イベントevent )は、このアイテムの hover enter イベントを受け取るために再実装することができます。デフォルトの実装ではupdate() を呼び出します。

event に対してQEvent::ignore() やQEvent::accept() を呼び出しても、何の効果もありません。

hoverMoveEvent()、hoverLeaveEvent()、sceneEvent()、setAcceptHoverEvents()も参照してください

[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)

イベントevent に対するこのイベント・ハンドラは、このアイテムのホバー離脱イベントを受け取るために再実装することができます。デフォルトの実装ではupdate() を呼び出します。

event に対してQEvent::ignore() やQEvent::accept() を呼び出しても、何の効果もありません。

hoverEnterEvent()、hoverMoveEvent()、sceneEvent()、setAcceptHoverEvents()も参照してください

[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

このイベントハンドラのイベントevent は、このアイテムのホバー移動イベントを受け取るために再実装することができます。デフォルトの実装は何もしません。

eventQEvent::ignore() やQEvent::accept() を呼び出しても、何の効果もありません。

hoverEnterEvent()、hoverLeaveEvent()、sceneEvent()、setAcceptHoverEvents()も参照してください

[virtual protected] void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)

イベントevent に対するこのイベント・ハンドラは、この項目の入力メソッド・イベントを受け取るために再実装できます。デフォルトの実装はイベントを無視します。

inputMethodQuery() およびsceneEvent()も参照してください

Qt::InputMethodHints QGraphicsItem::inputMethodHints() const

この項目の現在の入力メソッドのヒントを返します。

入力メソッドのヒントは、入力アイテムにのみ関連します。ヒントは、入力メソッドがどのように動作すべきかを示すために使用されます。例えば、Qt::ImhNumbersOnly フラグが設定されている場合、入力メソッドは数字のみを入力できるように視覚的なコンポーネントを変更します。

この効果は入力メソッドの実装によって異なります。

setInputMethodHints() およびinputMethodQuery()も参照して ください。

[virtual protected] QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const

このメソッドは入力項目にのみ関係します。このメソッドは、入力メソッドがアイテムのプロパティのセットを問い合わせるために使用され、周囲のテキストや再変換のサポートなど、複雑な入力メソッド操作に対応できるようにします。query は、どのプロパティが問い合わせられるかを指定します。

inputMethodEvent() およびQInputMethodEventも参照してください

void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)

このアイテムのイベントフィルタをfilterItem にインストールし、このアイテムのすべてのイベントがfilterItemsceneEventFilter() 関数を最初に通過するようにします。

他のアイテムのイベントをフィルタするには、このアイテムを他のアイテムのイベント・フィルタとしてインストールします。例

QGraphicsScene scene;
QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20));
QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20));

line->installSceneEventFilter(ellipse);
// line's events are filtered by ellipse's sceneEventFilter() function.

ellipse->installSceneEventFilter(line);
// ellipse's events are filtered by line's sceneEventFilter() function.

アイテムは、同じシーン内の他のアイテムのイベントのみをフィルタリングすることができます。また、アイテムはそれ自身のイベントをフィルタリングすることはできません。代わりに、sceneEvent ()を直接再実装することができます。

アイテムは、シーンイベントフィルタをインストールして使用するために、シーンに属していなければなりません。

removeSceneEventFilter()、sceneEventFilter()、sceneEvent()も参照してください

bool QGraphicsItem::isActive() const

このアイテムがアクティブであればtrue を返し、そうでなければfalse を返す。

アイテムがアクティブであるのは、シーンがアクティブである場合のみです。アイテムがアクティブであるのは、それがアクティブパネルであるか、その子孫である場合である。アクティブでないパネルのアイテムは、アクティブではない。

シーンにアクティブなパネルがない場合、パネルの一部でないアイテムは、シーンのアクティブ化に従う。

アクティブなアイテムだけが、入力フォーカスを得ることができる。

QGraphicsScene::isActive(),QGraphicsScene::activePanel(),panel(),isPanel()も参照

bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const

このアイテムがchild の祖先である場合(すなわち、このアイテムがchild の親、またはchild の親の祖先の1つである場合)、true を返す。

parentItem()も参照

bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const

このアイテムがモーダルパネルによってブロックされている場合はtrue を返し、そうでない場合は false を返します。blockingPanel がゼロでない場合、blockingPanel は、このアイテムをブロックしているモーダルパネルに設定されます。このアイテムがブロックされていない場合、blockingPanel はこの関数によって設定されません。

この関数は、シーン内にないアイテムに対しては、常にfalse を返す。

panelModality()、setPanelModality()、PanelModalityも参照

bool QGraphicsItem::isClipped() const

このアイテムがクリップされている場合、true を返す。アイテムがクリッピングされているのは、ItemClipsToShape フラグをセットしているか、そのアイテムかその祖先のいずれかがItemClipsChildrenToShape フラグをセットしている場合です。

クリッピングは、アイテムの外観(すなわち、ペイント)、およびマウスとホバーイベントの配信に影響します。

clipPath(),shape(),setFlags()も参照してください

bool QGraphicsItem::isEnabled() const

アイテムが有効な場合はtrue を返し、そうでない場合は false を返します。

setEnabled()も参照して ください。

bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const

これはオーバーロードされた関数です。

rect が、その上にある衝突アイテムの不透明な形状によって完全に隠されている場合 (つまり、このアイテムよりも Z 値が大きい場合)、true を返す。

opaqueArea()も参照

bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const

これはオーバーロードされた関数です。

この便宜関数は、 isObscured(QRectF(x,y,w,h)) を呼び出すのと等価である。

[virtual] bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const

こ の項目の外接矩形が、item の不透明形状に よ っ て完全に隠 さ れてい る と き は、true を返 し ます。

基本実装では、itemopaqueArea() をこのアイテムの座標系にマップし、 このアイテムのboundingRect() がマップされた形状に完全に含まれるかどうかをチェックします。

この関数を再実装して、このアイテムがitem によって隠されているかどうかを判定するカスタムアルゴリズムを提供することができます。

opaqueArea() およびisObscured()も参照

bool QGraphicsItem::isPanel() const

アイテムがパネルの場合はtrue を返し、そうでない場合はfalse を返します。

QGraphicsItem::panel() およびItemIsPanel参照

bool QGraphicsItem::isSelected() const

この項目が選択されている場合はtrue を返し、そうでない場合は false を返します。

グループ内のアイテムは、グループの選択状態を継承します。

デフォルトでは、アイテムは選択されていません。

setSelected() およびQGraphicsScene::setSelectionArea()も参照して ください。

bool QGraphicsItem::isUnderMouse() const

このアイテムが現在いずれかのビューでマウス・カーソルの下にある場合はtrue を返し、そうでない場合は false を返します。

QGraphicsScene::views() およびQCursor::pos() も参照

bool QGraphicsItem::isVisible() const

項目が表示されている場合はtrue を返し、そうでない場合は false を返します。

アイテムの一般的な可視性は、QGraphicsView によって実際に可視化されているかどうかとは無関係であることに注意してください。

setVisible()も参照

bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const

アイテムがparent に可視であればtrue を返し、そうでなければ false を返す。parentnullptr にすることもでき、その場合この関数は、アイテムがシーンに可視であるかどうかを返す。

アイテムは、isVisible() が真であっても、その祖先からは見えないかもしれない。また、isVisible() が偽であっても、その祖先からは見えるかもしれない。祖先が非表示の場合、アイテム自体も暗黙のうちに非表示になり、その場合この関数は false を返します。

isVisible() およびsetVisible()も参照

bool QGraphicsItem::isWidget() const

このアイテムがウィジェット(つまりQGraphicsWidget )の場合はtrue を返し、そうでない場合はfalse を返します。

bool QGraphicsItem::isWindow() const

アイテムがQGraphicsWidget ウィンドウの場合はtrue を返し、そうでない場合は false を返します。

QGraphicsWidget::windowFlags()も参照

[virtual protected] QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)

この仮想関数は、カスタムアイテムにアイテムの状態が変化したことを通知するためにQGraphicsItem から呼び出されます。この関数を再実装することで、変更に反応することができ、場合によっては(change に依存しますが)調整を行うことができます。

change value は新しい値です。値の型は に依存します。change

QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
    if (change == ItemPositionChange && scene()) {
        // value is the new position.
        QPointF newPos = value.toPointF();
        QRectF rect = scene()->sceneRect();
        if (!rect.contains(newPos)) {
            // Keep the item inside the scene rect.
            newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
            newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
            return newPos;
        }
    }
    return QGraphicsItem::itemChange(change, value);
}

デフォルトの実装は何もせず、value を返す。

注:この関数の再実装では、特定のQGraphicsItem 関数を呼び出すことはできない。詳細はGraphicsItemChange のドキュメントを参照のこと。

GraphicsItemChangeも参照

QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const

このアイテムの座標をother にマップするQTransform を返します。ok が null でない場合、およびそのような変換がない場合、ok が指すブール値は false に設定されます。

この変換は、mapToItem() やmapFromItem() 関数に代わるもので、適切な変換を返すことで、図形や座標を自分でマッピングできるようにします。また、同じ2つのアイテムの間で繰り返しマッピングを行う際に、より効率的なコードを書くことができます。

注意: まれに、2 つのアイテム間をマッピングする変換が存在しないことがあります。

mapToItem(),mapFromItem(),deviceTransform()も参照してください

[virtual protected] void QGraphicsItem::keyPressEvent(QKeyEvent *event)

イベントevent に対するこのイベントハンドラは、このアイテムのキー押下イベントを受け取るように再実装することができる。デフォルトの実装はイベントを無視します。このハンドラを再実装すると、イベントはデフォルトで受け付けられます。

キーイベントは、ItemIsFocusable フラグが設定され、キーボード入力にフォーカスがあるアイテムに対してのみ受信されることに注意してください。

keyReleaseEvent()、setFocus()、QGraphicsScene::setFocusItem()、sceneEvent()も参照のこと

[virtual protected] void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)

このイベントハンドラ(イベントevent 用)は、このアイテムのキーリリースイベントを受け取るために再実装することができます。デフォルトの実装では、このイベントは無視されます。このハンドラを再実装すると、イベントはデフォルトで受け付けられます。

キーイベントは、ItemIsFocusable フラグが設定され、キーボード入力にフォーカスがあるアイテムに対してのみ受信されることに注意してください。

keyPressEvent()、setFocus()、QGraphicsScene::setFocusItem()、sceneEvent()も参照

QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const

item の座標系にあるパスpath を、このアイテムの座標系にマップし、マップされたパスを返す。

itemnullptr の場合、この関数はmapFromScene() と同じものを返す。

itemTransform()、mapFromParent()、mapFromScene()、mapToItem() およびThe Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const

item の座標系にあ る 点point を、 こ の項目の座標系へマ ッ プ し 、 マ ッ プ し た座標を返す。

itemnullptr の場合、この関数はmapFromScene() と同じものを返す。

itemTransform()、mapFromParent()、mapFromScene()、transform()、mapToItem() およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const

item の座標系にあ る 多角形polygon を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ し た多角形を返す。

itemnullptr の場合、この関数はmapFromScene() と同じものを返す。

itemTransform(),mapToItem(),mapFromParent(),transform(), およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const

item の座標系にあ る 矩形rect を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ し た矩形を多角形 と し て返 し ます。

itemnullptr の場合、この関数はmapFromScene() と同じものを返す。

itemTransform(),mapToItem(),mapFromParent(),transform(), およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

この便利関数は、mapFromItem(item,QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const

これはオーバーロードされた関数です。

この便利関数は、 mapFromItem(item,QPointF(x,y)) を呼び出すのと同じです。

QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const

このアイテムの親の座標系にあるパスpath を、このアイテムの座標系にマップし、マップされたパスを返す。

mapFromScene() ・mapFromItem() ・mapToParent() ・The Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapFromParent(const QPointF &point) const

こ の項目の親の座標系にあ る 点point を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ し た座標を返す。

mapFromItem(),mapFromScene(),transform(),mapToParent(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const

このアイテムの親の座標系にある多角形polygon を、このアイテムの座標系にマップし、マップされた多角形を返す。

mapToParent(),mapToItem(),transform(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const

このアイテムの親の座標系にある矩形rect を、このアイテムの座標系にマップし、マップされた矩形を多角形として返す。

mapToParent(),mapFromItem(),transform(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const

この便利関数は、mapFromItem(QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const

これはオーバーロードされた関数です。

こ の便宜関数は、 mapFromParent(QPointF(x,y)) を呼び出すのと同等です。

QPainterPath QGraphicsItem::mapFromScene(const QPainterPath &path) const

このアイテムのシーンの座標系にあるパスpath を、このアイテムの座標系にマップし、マップされたパスを返す。

mapFromParent(),mapFromItem(),mapToScene(),The Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapFromScene(const QPointF &point) const

このアイテムのシーンの座標系にある点point を、このアイテムの座標系にマップし、マップされた座標を返す。

mapFromItem(),mapFromParent(),transform(),mapToScene(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const

このアイテムのシーンの座標系にある多角形polygon を、このアイテムの座標系にマップし、マップされた多角形を返す。

mapToScene(),mapFromParent(),transform(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const

このアイテムのシーンの座標系にある矩形rect を、このアイテムの座標系にマップし、マップされた矩形を多角形として返す。

mapToScene(),mapFromItem(),transform(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapFromScene(qreal x, qreal y, qreal w, qreal h) const

この便宜関数は、 mapFromScene(QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapFromScene(qreal x, qreal y) const

これはオーバーロードされた関数です。

こ の便宜関数は、 mapFromScene(QPointF(x,y) ) を呼び出すのと同等です。

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const

item の座標系にあ る 矩形rect を、 こ の項目の座標系へマ ッ プ し 、 マ ッ プ し た矩形を新 し い矩形 (すなわち、 で き た多角形の外接矩形) と し て返 し ます。

itemnullptr の場合、この関数はmapRectFromScene ()と同じものを返す。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectFromItem(item,QRectF(x,y,w,h)) を呼び出すのと等価です。

QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const

こ のア イ テムの親の座標系にあ る 矩形rect を、 こ のア イ テムの座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返 し ます。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照

QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectFromParent(QRectF(x,y,w,h)) を呼び出すのと等価です。

QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const

シーンの座標系にあ る 矩形rect を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ し た矩形を新 し い矩形 (すなわち、 で き あがっ た多角形の外接矩形) と し て返 し ます。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照してください

QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectFromScene(QRectF(x,y,w,h)) を呼び出すのと等価です。

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const

こ の項目の座標系にあ る 矩形rect を、item の座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返 し ます。

itemnullptr の場合、この関数はmapRectToScene ()と同じものを返す。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectToItem(item,QRectF(x,y,w,h)) を呼び出すのと等価です。

QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const

こ の項目の座標系にあ る 矩形rect を、 その親の座標系にマ ッ プ し 、 マ ッ プ し た矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返す。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照してください

QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectToParent(QRectF(x,y,w,h)) を呼び出すのと等価です。

QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const

こ の項目の座標系にあ る 矩形rect を、 シーン座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返 し ます。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View CoordinateSystemも参照してください

QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const

こ の便宜関数は、 mapRectToScene(QRectF(x,y,w,h)) を呼び出すのと等価です。

QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const

こ の項目の座標系にあ る パ スpath を、item の座標系にマ ッ プ し 、 マ ッ プ し たパ ス を返す。

itemnullptr の場合、この関数はmapToScene() と同じものを返す。

itemTransform()、mapToParent()、mapToScene()、mapFromItem() およびThe Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const

こ の項目の座標系にあ る 点point を、item の座標系にマ ッ プ し 、 マ ッ プ し た座標を返す。

itemnullptr の場合、この関数はmapToScene() と同じものを返す。

itemTransform()、mapToParent()、mapToScene()、transform()、mapFromItem() およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const

この項目の座標系にある多角形polygonitem の座標系にマップし、マップされた多角形を返す。

itemnullptr の場合、この関数はmapToScene() と同じものを返す。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(), およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const

こ の項目の座標系にあ る 矩形rect を、item の座標系にマ ッ プ し 、 マ ッ プ し た矩形を多角形 と し て返す。

itemnullptr の場合、この関数はmapToScene() と同じものを返す。

itemTransform(),mapToParent(),mapToScene(),mapFromItem(), およびThe Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

この便利関数は、mapToItem(item,QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const

これはオーバーロードされた関数です。

こ の便宜関数は、 mapToItem(item,QPointF(x,y)) を呼び出すのと同等です。

QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const

こ の項目の座標系にあ る パ スpath を、 その親の座標系にマ ッ プ し 、 マ ッ プ し たパ ス を返す。アイテムに親がない場合、path はシーンの座標系にマップされます。

mapToScene() ・mapToItem() ・mapFromParent() ・The Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapToParent(const QPointF &point) const

こ の項目の座標系にあ る 点point を、 その親の座標系にマ ッ プ し 、 マ ッ プ さ れた座標を返す。項目が親を持たない場合、point はシーンの座標系にマ ッ プ さ れます。

mapToItem(),mapToScene(),transform(),mapFromParent(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const

このアイテムの座標系にある多角形polygon を、その親の座標系にマップし、マップされた多角形を返す。アイテムに親がない場合、polygon はシーンの座標系にマップされます。

mapToScene(),mapToItem(),mapFromParent(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const

こ の項目の座標系にあ る 矩形rect を、 その親の座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を多角形 と し て返す。アイテムに親がない場合、rect はシーンの座標系にマップされます。

mapToScene(),mapToItem(),mapFromParent(),The Graphics View CoordinateSystemも参照してください

QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const

この便宜関数は、 mapToParent(QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const

これはオーバーロードされた関数です。

こ の便宜関数は、 mapToParent(QPointF(x,y) ) を呼び出すのと同等です。

QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const

このアイテムの座標系にあるパスpath をシーンの座標系にマップし、マップされたパスを返します。

mapToParent() ・mapToItem() ・mapFromScene() ・The Graphics View CoordinateSystemも参照

QPointF QGraphicsItem::mapToScene(const QPointF &point) const

こ の項目の座標系にあ る 点point を、 シーンの座標系にマ ッ プ し 、 マ ッ プ さ れた座標を返す。

mapToItem(),mapToParent(),transform(),mapFromScene(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const

このアイテムの座標系にある多角形polygon をシーンの座標系にマップし、マップされた多角形を返す。

mapToParent(),mapToItem(),mapFromScene(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const

このアイテムの座標系にある矩形rect をシーンの座標系にマップし、マップされた矩形を多角形として返す。

mapToParent(),mapToItem(),mapFromScene(),The Graphics View CoordinateSystemも参照

QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const

この便宜関数は、 mapToScene(QRectF(x,y,w,h)) を呼び出すのと同じです。

QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const

これはオーバーロードされた関数です。

この便宜関数は、 mapToScene(QPointF(x,y)) を呼び出すことと同等です。

[virtual protected] void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)

このイベントハンドラは、イベントevent に対して、このアイテムのマウスダブルクリックイベントを受け取るために再実装することができます。

アイテムをダブルクリックすると、そのアイテムはまずマウスのプレス・イベントを受け取り、次にリリース・イベント(つまりクリック)を受け取り、次にダブルクリック・イベントを受け取り、最後にリリース・イベントを受け取ります。

eventQEvent::ignore() やQEvent::accept() を呼び出しても、何の効果もありません。

デフォルトの実装では、mousePressEvent ()を呼び出します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中で QGraphicsItem::mouseDoubleClickEvent() を呼び出してください。

アイテムがselectable でもmovable でもない場合、ダブルクリックイベントを受け取らないことに注意してください(この場合、シングルマウスクリックは無視され、ダブルクリックの生成は停止します)。

mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent()、sceneEvent()も参照

[virtual protected] void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

このイベント・ハンドラ(イベントevent )は、このアイテムのマウス移動イベントを受け取るために再実装することができます。このイベントを受信した場合、このアイテムはマウス押下イベントも受信しており、このアイテムが現在のマウスグラバーであることを確認できます。

event に対してQEvent::ignore() やQEvent::accept() を呼び出しても、何の効果もありません。

デフォルトの実装は、選択と移動のような基本的なアイテムのインタラクションを処理します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中で QGraphicsItem::mouseMoveEvent() を呼び出してください。

mousePressEvent() は、マウス・イベントを受け取るグラフィック・アイテムを決定することに注意してください。詳細はmousePressEvent() の説明を参照してください。

mousePressEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、sceneEvent()も参照して ください。

[virtual protected] void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)

このイベントハンドラ(イベントevent )は、このアイテムのマウス押下イベントを受信するために再実装することができます。マウス押下イベントは、押下されたマウスボタンを受け付けるアイテムにのみ送られます。デフォルトでは、アイテムはすべてのマウスボタンを受け付けますが、setAcceptedMouseButtons() を呼び出すことで変更できます。

マウス・プレス・イベントは、どのアイテムがマウス・グラバーになるかを決定します(QGraphicsScene::mouseGrabberItem() を参照)。この関数を再実装しない場合、press イベントはこのアイテムの下にある最上位のアイテムに伝搬し、他のマウスイベントはこのアイテムに配信されません。

この関数を再実装した場合、event がデフォルトで受け付けられ (QEvent::accept() を参照)、このアイテムがマウスグラバーとなります。これにより、このアイテムは将来の移動、リリース、ダブルクリックのイベントを受け取ることができます。eventQEvent::ignore() を呼び出すと、このアイテムはマウス・グラブを失い、event はその下にある一番上のアイテムに伝搬します。新しいマウス押下イベントを受け取らない限り、それ以降のマウスイベントはこのアイテムに配信されません。

デフォルトの実装では、選択や移動などの基本的なアイテムのインタラクションを処理します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中でQGraphicsItem::mousePressEvent()を呼び出してください。

このイベントは、movable でもselectable でもないアイテムに対してはQEvent::ignore()d となります。

mouseMoveEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),sceneEvent()も参照してください

[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)

イベントevent のイベント・ハンドラは、このアイテムのマウス・リリース・イベントを受け取るために再実装することができます。

event に対してQEvent::ignore() やQEvent::accept() を呼び出しても効果はありません。

デフォルトの実装は、選択と移動のような基本的なアイテムのインタラクションを処理します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中で QGraphicsItem::mouseReleaseEvent() を呼び出してください。

mousePressEvent() は、マウス・イベントを受け取るグラフィック・アイテムを決定することに注意してください。詳細はmousePressEvent() の説明を参照してください。

mousePressEvent(),mouseMoveEvent(),mouseDoubleClickEvent(),sceneEvent()も参照

void QGraphicsItem::moveBy(qreal dx, qreal dy)

アイテムを水平方向にdx ポイント、垂直方向にdy ポイント移動する。この関数は、setPos(pos() +QPointF(dx,dy)) を呼び出すのと等価である。

qreal QGraphicsItem::opacity() const

0.0(透明)から1.0(不透明)の間で、このアイテムのローカルの不透明度を返します。この値は、親および祖先の値と結合されてeffectiveOpacity() になります。有効な不透明度は、アイテムの描画方法を決定し、QGraphicsView::items() などの関数で照会されたときの可視性にも影響します。

opacity プロパティは、paint() 関数に渡されるペインターの状態を決定します。アイテムがキャッシュされている場合、つまりItemCoordinateCache またはDeviceCoordinateCache の場合、レンダリング時に有効なプロパティがアイテムのキャッシュに適用されます。

デフォルトの不透明度は 1.0 で、完全に不透明です。

setOpacity()、paint()、ItemIgnoresParentOpacityItemDoesntPropagateOpacityToChildrenも参照

[virtual] QPainterPath QGraphicsItem::opaqueArea() const

この仮想関数は、このアイテムが不透明である領域を表す shape を返す。領域が不透明であるのは、不透明なブラシや色で塗りつぶされている場合です(つまり、透明ではありません)。

この関数は、isObscuredBy() によって使用されます。 () は、その下にあるアイテムがこのアイテムによって隠されているかどうかを判断するために呼び出されます。

デフォルトの実装では、空のQPainterPath を返し、このアイテムが完全に透明で、他のアイテムを隠さないことを示します。

isObscuredBy(),isObscured(),shape()も参照してください

[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)

この関数は通常QGraphicsView から呼び出され、アイテムの内容をローカル座標で描画します。

この関数をQGraphicsItem のサブクラスで再実装し、painter を使用してアイテムのペイントを実装します。option パラメータは、アイテムの状態、露出領域、詳細レベルヒントなどのスタイルオプションを提供します。widget 引数はオプションです。キャッシュされたペイントの場合、widget は常に 0 です。

void RoundRectItem::paint(QPainter *painter,
                          const QStyleOptionGraphicsItem *option,
                          QWidget *widget)
{
    painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
}

ペインターのペンはデフォルトで 0-width で、ペイントデバイスのパレットからQPalette::Text ブラシに初期化されます。ブラシはQPalette::Window に初期化されます。

レンダリングのアーティファクトを避けるために、すべてのペイントをboundingRect() の境界内に制限するようにしてください (QGraphicsView はペインターをクリップしないため)。特に、QPainter が割り当てられたQPen を使用してシェイプのアウトラインをレンダリングする場合、アウトラインの半分がレンダリングするシェイプの外側に、半分が内側に描画されます (たとえば、ペン幅が 2 単位の場合、アウトラインはboundingRect() の 1 単位内側に描画する必要があります)。QGraphicsItem は、幅が 0 以外のコスメティックペンの使用をサポートしていません。

すべての描画はローカル座標で行われます。

注: update () が呼び出されない限り、アイテムは常にまったく同じ方法で再描画されることが必須です。言い換えれば、update() が呼び出されない限り、2 回の paint() の呼び出しは常に同じ出力を生成しなければなりません。

注意: アイテムのキャッシュを有効にしても、update() が明示的に呼び出されなくても、グラフィックス・ビュー・フレームワークによって paint() が一度だけ呼び出されることは保証されません。詳細はsetCacheMode() のドキュメントを参照してください。

setCacheMode(),QPen::width(),アイテムの座標,ItemUsesExtendedStyleOptionも参照してください

QGraphicsItem *QGraphicsItem::panel() const

アイテムのパネルを返し、このアイテムにパネルがない場合はnullptr を返します。アイテムがパネルの場合、それ自身を返します。そうでない場合は、パネルである最も近い祖先を返します。

isPanel() およびItemIsPanelも参照してください

QGraphicsItem::PanelModality QGraphicsItem::panelModality() const

この項目のモダリティを返します。

setPanelModality() も参照して ください。

QGraphicsItem *QGraphicsItem::parentItem() const

このアイテムの親アイテムへのポインタを返します。このアイテムに親がない場合は、nullptr が返されます。

setParentItem() およびchildItems()も参照して ください。

QGraphicsObject *QGraphicsItem::parentObject() const

アイテムの親へのポインタをQGraphicsObject にキャストして返します。 親アイテムがQGraphicsObject でない場合はnullptr を返します。

parentItem() およびchildItems()も参照

QGraphicsWidget *QGraphicsItem::parentWidget() const

アイテムの親ウィジェットへのポインタを返します。アイテムの親ウィジェットは、ウィジェットである最も近い親アイテムです。

parentItem() およびchildItems()も参照

QPointF QGraphicsItem::pos() const

アイテムの位置を親座標で返します。アイテムに親がない場合、その位置はシーン座標で与えられます。

アイテムの位置は、親座標における原点(ローカル座標 (0, 0))を表します。この関数は、mapToParent(0, 0)と同じものを返します。

便宜上、scenePos() を呼び出すと、親に関係なく、アイテムのシーン座標での位置を決定することもできます。

x(),y(),setPos(),transform(),The Graphics View CoordinateSystemも参照してください

[protected] void QGraphicsItem::prepareGeometryChange()

ジオメトリの変更のためにアイテムを準備します。アイテムの外接矩形を変更する前にこの関数を呼び出して、QGraphicsScene'のインデックスを最新の状態に保ちます。

prepareGeometryChange() は、これが必要な場合にupdate() を呼び出します。

例:

void CircleItem::setRadius(qreal newRadius)
{
    if (radius != newRadius) {
        prepareGeometryChange();
        radius = newRadius;
    }
}

boundingRect()も参照

void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)

filterItem から、この項目のイベント・フィルタを削除します。

installSceneEventFilter() も参照して ください。

void QGraphicsItem::resetTransform()

この項目の変換行列を同一行列に、またはすべての変換プロパティをデフォルト値にリセットします。これは、setTransform(QTransform()) を呼び出すのと同じです。

setTransform() およびtransform()も参照して ください。

qreal QGraphicsItem::rotation() const

Z軸周りの時計回りの回転を度単位で返します。デフォルト値は 0(つまり、アイテムは回転されません)。

この回転は、アイテムのscale(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

setRotation()、transformOriginPoint()、Transformationsも参照

qreal QGraphicsItem::scale() const

項目のスケールファクタを返します。デフォルトのスケールファクターは 1.0(つまり、アイテムはスケールされません)。

このスケールは、アイテムのrotation()、transform()、transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

setScale()、rotation()、Transformationsも参照してください

QGraphicsScene *QGraphicsItem::scene() const

アイテムがシーンに保存されていない場合は、nullptr を返します。

アイテムをシーンに追加または移動するには、QGraphicsScene::addItem() を呼び出します。

QRectF QGraphicsItem::sceneBoundingRect() const

sceneTransform() とboundingRect() を組み合わせて、シーン座標でこのアイテムの境界矩形を返す。

boundingRect() およびThe Graphics View CoordinateSystemも参照してください

[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)

この仮想関数は、このアイテムに対するイベントを受け取る。専用イベントハンドラcontextMenuEvent(),focusInEvent(),focusOutEvent(),hoverEnterEvent(),hoverMoveEvent(),hoverLeaveEvent(),keyPressEvent(),keyReleaseEvent(),mousePressEvent(),mouseReleaseEvent(),mouseMoveEvent(),mouseDoubleClickEvent() にディスパッチされる前にイベントをインターセプトするために、この関数を再実装する。

イベントが認識され、処理された場合はtrue を返します。そうでない場合(イベント・タイプが認識されなかった場合など)は false を返します。

event はインターセプトされたイベントです。

[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)

項目watched のイベントをフィルターする。event はフィルターされたイベント。

サブクラスでこの関数を再実装すると、アイテムが応答できるようになる前に、それらのアイテムに送信されるすべてのイベントをインターセプトし、他のアイテムのイベントフィルタとして使用できるようになります。

再実装は、指定されたイベントのさらなる処理を防止するためにtrueを返し、監視されるアイテムに配信されないことを保証するか、またはイベントがイベントシステムによってさらに伝播されるべきであることを示すためにfalseを返さなければならない。

installSceneEventFilter()も参照

QPointF QGraphicsItem::scenePos() const

シーン座標におけるアイテムの位置を返す。これは、mapToScene(0, 0) を呼び出すのと同じです。

pos()、sceneTransform()、The Graphics View Coordinate System参照

QTransform QGraphicsItem::sceneTransform() const

シーン変換行列 このアイテムのシーン変換行列を返します。この行列は、このアイテムのローカル座標系からシーンの座標系に座標や幾何学的形状をマッピングするために使用することができます。シーンから座標をマップするには、まず返された行列を反転する必要があります。

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.sceneTransform().map(QPointF(0, 0));
// returns QPointF(100, 100);

rect.sceneTransform().inverted().map(QPointF(100, 100));
// returns QPointF(0, 0);

例: アイテムのローカル変換のみを返すtransform() とは異なり、この関数は、アイテムの(および親の)位置と、すべての変換プロパティを含みます。

transform(),setTransform(),scenePos(),The Graphics View Coordinate System, およびTransformationsも参照してください

void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())

dx,dy によってrect の内容をスクロールします。rect が null rect (デ フ ォ ル ト ) の場合、 項目の外接矩形が ス ク ロール さ れます。

スクロールは、アイテムの内容(またはアイテムの一部)が垂直方向または水平方向に移動したときに、単に再描画するよりも高速な代替手段を提供します。現在の変換と描画デバイス(ビューポートなど)の機能によっては、この操作は、memmove()を使用して、ある場所から別の場所にピクセルを移動するだけになる場合があります。ほとんどの場合、これは領域全体を再レンダリングするよりも高速です。

スクロールが終わると、アイテムは新しく表示された領域の更新を発行します。スクロールがサポートされていない場合(例えば、スクロール最適化の恩恵を受けないOpenGLビューポートにレンダリングしている場合)、この関数はupdate(rect)を呼び出すのと同じです。

注意:スクロールがサポートされるのは、QGraphicsItem::ItemCoordinateCache が有効な場合のみです。それ以外の場合は、この関数を呼び出すと update(rect) を呼び出すのと同じことになります。アイテムが不透明で、他のアイテムに重なっていないことが確実にわかっている場合は、rect をビューポート座標にマップし、ビューポートをスクロールすることができます。

QTransform xform = item->deviceTransform(view->viewportTransform());
QRect deviceRect = xform.mapRect(rect).toAlignedRect();
view->viewport()->scroll(dx, dy, deviceRect);

boundingRect()も参照してください

void QGraphicsItem::setAcceptDrops(bool on)

on が true の場合、このアイテムはドラッグ&ドロップイベントを受け付けます。そうでない場合は、ドラッグ&ドロップイベントに対して透明です。デフォルトでは、アイテムはドラッグ&ドロップイベントを受け付けません。

acceptDrops()も参照

void QGraphicsItem::setAcceptHoverEvents(bool enabled)

enabled が true の場合、このアイテムはホバーイベントを受け付けます。デフォルトでは、アイテムはホバーイベントを受け付けません。

ホバーイベントは、現在のマウスグラバーアイテムがないときに送られます。マウスカーソルがアイテムに入った時、アイテムの中を移動した時、アイテムから離れた時に送られます。ホバーイベントは、アイテムが入力された時にそのアイテムをハイライトしたり、マウスカーソルがアイテムの上に移動した時のトラッキングによく使われます(QWidget::mouseTracking と同じです)。

親アイテムは子アイテムの前にホバー入力イベントを受け取り、子アイテムの後にホバー離脱イベントを受け取ります。しかし、カーソルが子アイテムに入った場合、親アイテムは hover leave イベントを受け取りません。カーソルが子アイテムの領域を含む親アイテムの領域を離れるまで、親アイテムは "hovered" のままです。

親アイテムが子イベントを処理する場合、カーソルが子アイテムを通過すると、ホバー移動、ドラッグ移動、ドロップイベントを受け取りますが、子アイテムの代わりにホバー入力、ホバー離脱、ドラッグ入力、ドラッグ離脱イベントを受け取ることはありません。

ウィンドウ装飾を持つQGraphicsWidget は、acceptHoverEvents() の値に関係なく、ホバーイベントを受け取ります。

acceptHoverEvents()、hoverEnterEvent()、hoverMoveEvent()、hoverLeaveEvent()も参照

void QGraphicsItem::setAcceptTouchEvents(bool enabled)

enabled が true の場合、このアイテムはtouch events を受け付けます。デフォルトでは、アイテムはタッチイベントを受け付けません。

acceptTouchEvents()も参照してください

void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)

このアイテムがマウスイベントを受け付けるマウスbuttons を設定します。

デフォルトでは、すべてのマウスボタンを受け付ける。アイテムがマウスボタンを受け付けた場合、そのボタンに対するマウス押下イベントが配信されると、そのアイテムはマウスグラバーアイテムになります。しかし、アイテムがマウスボタンを受け付けない場合、QGraphicsScene は、その下にある受け付ける最初のアイテムにマウスイベントを転送します。

あるアイテムのマウスイベントを無効にする(つまり、マウスイベントに対して透明化する)には、 setAcceptedMouseButtons(Qt::NoButton) を呼び出します。

acceptedMouseButtons() およびmousePressEvent()も参照してください

void QGraphicsItem::setActive(bool active)

active が真で、シーンがアクティブな場合、このアイテムのパネルはアクティブになります。そうでなければ、パネルは非アクティブになる。

アイテムがアクティブなシーンの一部でない場合、active は、シーンがアクティブになるか、アイテムがシーンに追加されたときに、パネルに何が起こるかを決定する。trueの場合、アイテムがシーンに追加されるか、シーンがアクティブになると、アイテムのパネルはアクティブになる。そうでなければ、アイテムは、シーンのアクティブ化された状態とは無関係に、非アクティブのままになる。

isPanel(),QGraphicsScene::setActivePanel(),QGraphicsScene::isActive()も参照

void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)

外接領域の粒度をgranularity に設定します。デフォルト値は 0(つまり、外接領域がアイテムの外接矩形に対応する最小の粒度)です。

granularity は、boundingRegion() が、 アイテムの外接領域がど の程度細か く あ る べ き か を算出す る ために用い ら れます。達成可能な最高の粒度は 1 で、boundingRegion() は、それぞれのデバイスで可能な最も細かいアウトラインを返します (たとえば、QGraphicsView ビューポートの場合、これはピクセルの完全な境界領域を与えます)。可能な最小の粒度は0です。granularity の値は、デバイスの解像度と境界領域の解像度の比率を表します(例えば、0.25の値は、各チャンクが4x4のデバイスユニット/ピクセルに対応する領域を提供します)。

boundingRegionGranularity()も参照してください

void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())

アイテムのキャッシュモードをmode に設定します。

オプションの引数logicalCacheSize は、ItemCoordinateCache モードでのみ使用され、キャッシュバッファの解像度を記述します。logicalCacheSize が (100, 100) の場合、QGraphicsItem は、アイテム自体の論理サイズに関係なく、アイテムをグラフィックメモリの 100x100 ピクセルに収めます。デフォルトでは、QGraphicsItemboundingRect() のサイズを使用する。ItemCoordinateCache 以外のキャッシュモードでは、logicalCacheSize は無視されます。

キャッシュは、アイテムがそれ自体の再描画にかなりの時間を費やす場合、レンダリングを高速化することができます。特に、アイテムが再描画に費やす時間が、QGraphicsItem がキャッシュから再描画に費やす時間よりも短い場合は、キャッシュによってレンダリングが遅くなることがあります。

キャッシュが有効になっている場合、アイテムのpaint() 関数は通常、オフスクリーンの pixmap キャッシュに描画します。その後の再描画要求に対しては、Graphics View フレームワークがキャッシュから再描画します。このアプローチは、すべてのキャッシュをOpenGLテクスチャとして保存するQGLWidgetで特にうまく機能します。

最適なパフォーマンスを得るためには、QPixmapCache のキャッシュ上限を変更する必要があるかもしれないことに注意してください。

異なるキャッシュモードについては、CacheMode のドキュメントを参照してください。

注意: キャッシュを有効にすることは、アイテムのpaint() 関数が、明示的なupdate() 呼び出しに応答してのみ呼び出されることを意味しません。このような場合、アイテムのpaint() 関数は、update() の呼び出しがなくても呼び出されます (つまり、キャッシュが有効でない場合とまったく同じです)。

cacheMode()、CacheMode 、およびQPixmapCache::setCacheLimit()も参照して ください。

void QGraphicsItem::setCursor(const QCursor &cursor)

アイテムの現在のカーソル形状をcursor に設定します。 マウスカーソルは、このアイテムの上にあるとき、この形状になります。便利な形状についてはlist of predefined cursor objects を参照してください。

エディタアイテムはIビームカーソルを使用したいかもしれません:

item->setCursor(Qt::IBeamCursor);

カーソルが設定されていない場合、下のアイテムのカーソルが使用されます。

cursor()、hasCursor()、unsetCursor()、QWidget::cursorQGuiApplication::overrideCursor()も参照して ください。

void QGraphicsItem::setData(int key, const QVariant &value)

キーkey からvalue に対して、この項目のカスタム・データを設定します。

カスタム・アイテム・データは、任意のアイテムの任意のプロパティを格納するのに便利です。Qt はこの機能をデータの保存には使用しません。

data()も参照してください

void QGraphicsItem::setEnabled(bool enabled)

enabled が true ならば、そのアイテムは有効で、そうでなければ無効です。

無効化されたアイテムは表示されますが、イベントは受け取らず、フォーカスを得ることも選択することもできません。マウス・イベントは破棄され、アイテムが不可視であるか、マウス・イベントを受け付けない場合(acceptedMouseButtons() を参照)以外は伝播されない。無効化されたアイテムはマウスをつかむことができず、その結果、マウスをつかんだときに無効化されたアイテムはつかまれなくなり、無効化されたときにフォーカスがあったアイテムはフォーカスを失います。

無効化されたアイテムは、伝統的にグレーアウトした色で描画されます(QPalette::Disabled 参照)。

親アイテムを無効にすると、その子アイテムもすべて無効になります。親アイテムを有効にすると、明示的に無効化されていない限り、すべての子アイテムが有効になります (つまり、子アイテムで setEnabled(false) を呼び出しても、親アイテムが無効化され、再び有効化された場合、再有効化されることはありません)。

アイテムはデフォルトで有効になっています。

注意: イベントフィルターをインストールした場合でも、アイテムに配信される前にイベントをインターセプトすることができます。

isEnabled()も参照してください

void QGraphicsItem::setFiltersChildEvents(bool enabled)

enabled が true の場合、このアイテムはすべての子アイテムのイベントをフィルタリングするように設定されます (つまり、いずれかの子アイテムを対象としたイベントはすべて、代わりにこのアイテムに送られます)。そうでない場合、enabled が false の場合、このアイテムは自身のイベントのみを処理します。デフォルト値は false です。

filtersChildEvents()も参照

void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)

enabled が true の場合、アイテム・フラグflag が有効になります。

flags() およびsetFlags() も参照

void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)

項目フラグをflags に設定します。flags にあるフラグはすべて有効になり、flags にないフラグはすべて無効になります。

アイテムにフォーカスがあり、flagsItemIsFocusable を有効にしていない場合、この関数を呼び出した結果、アイテムはフォーカスを失います。同様に、アイテムが選択されていて、flagsItemIsSelectable を有効にしていない場合、アイテムは自動的に選択解除される。

デフォルトでは、フラグは有効になっていない。(QGraphicsWidgetItemSendsGeometryChanges フラグをデフォルトで有効にし、位置の変化を追跡する)。

flags() およびsetFlag()も参照

void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)

この項目にキーボード入力フォーカスを与えます。引数focusReason は、この関数が生成するfocus event に渡されます; アイテムにフォーカスが当たった原因を説明するために使われます。

ItemIsFocusable フラグを設定した有効なアイテムだけがキーボードフォーカスを受け付けることができる。

このアイテムが表示されていなかったり、アクティブでなかったり、シーンに関連付けられていなかったりすると、即座に入力フォーカスを得ることはできません。しかし、このアイテムは、そのサブツリーのアイテムの優先フォーカスアイテムとして登録されます。

この関数を呼び出した結果、このアイテムはfocusReason と共にfocus in event を受け取る。 他のアイテムが既にフォーカスを得ている場合、そのアイテムはまず入力フォーカスを失ったことを示すfocus out event を受け取る。

clearFocus()、hasFocus()、focusItem()、focusProxy()も参照

void QGraphicsItem::setFocusProxy(QGraphicsItem *item)

アイテムのフォーカス・プロキシをitem に設定します。

アイテムがフォーカス・プロキシを持つ場合、アイテムが入力フォーカスを得たとき、フォーカス・プロキシは入力フォーカスを受け取ります。アイテム自体はまだフォーカスを持ちますが(つまり、hasFocus() は真を返します)、フォーカスプロキシだけがキーボード入力を受け取ります。

フォーカス・プロキシは、それ自身がフォーカス・プロキシを持つこともできます。その場合、キーボード入力は一番外側のフォーカス・プロキシが処理します。

フォーカス・プロキシitem は、このアイテムと同じシーンに属していなければなりません。

focusProxy(),setFocus(),hasFocus()も参照してください

void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)

アイテムのエフェクトとしてeffect を設定する。このアイテムに既にエフェクトがインストールされている場合、QGraphicsItem は、新しいeffect をインストールする前に、既存のエフェクトを削除します。既存のエフェクトを削除するには、setGraphicsEffect(nullptr) を呼び出します。

effect が別のアイテムにインストールされているエフェクトの場合、setGraphicsEffect() はそのアイテムからエフェクトを削除し、このアイテムにインストールします。

QGraphicsItem は の所有権を取得します。effect

注意: この関数は、それ自身とそのすべての子にエフェクトを適用します。

graphicsEffect()も参照してください

void QGraphicsItem::setGroup(QGraphicsItemGroup *group)

このアイテムをアイテムグループgroup に追加します。groupnullptr の場合、このアイテムは現在のグループから削除され、前のグループの親の子として追加されます。

group() およびQGraphicsScene::createItemGroup()も参照して ください。

void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)

この項目の現在の入力メソッドのヒントをhints に設定します。

inputMethodHints() およびinputMethodQuery() も参照して ください。

void QGraphicsItem::setOpacity(qreal opacity)

このアイテムのローカルopacity を 0.0(透明)から 1.0(不透明)の間で設定します。アイテムのローカルの不透明度は、親および祖先の不透明度と組み合わされてeffectiveOpacity() になります。

デフォルトでは、不透明度は親から子へ伝播するので、親の不透明度が0.5で子も0.5の場合、子の有効な不透明度は0.25になります。

opacity プロパティは、paint() 関数に渡されるペインターの状態を決定します。アイテムがキャッシュされている場合、つまりItemCoordinateCache またはDeviceCoordinateCache の場合、opacity プロパティはアイテムのレンダリング時にキャッシュに適用されます。

アイテムの不透明度が親とどのように結合されるかに影響する2つのアイテムフラグがあります:ItemIgnoresParentOpacityItemDoesntPropagateOpacityToChildren

注意: アイテムの不透明度を 0 に設定しても、アイテムは不可視にはなりません(isVisible() によれば)が、アイテムは不可視のように扱われます。詳しくはsetVisible() のドキュメントを参照。

opacity()、effectiveOpacity()、setVisible()も参照

void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)

この項目のモダリティをpanelModality に設定します。

可視アイテムのモダリティを変更すると、即座に反映されます。

panelModality() も参照して ください。

void QGraphicsItem::setParentItem(QGraphicsItem *newParent)

このアイテムの親アイテムをnewParent に設定します。 このアイテムにすでに親がある場合は、まず前の親から削除されます。newParent が 0 の場合、このアイテムはトップレベルアイテムになります。

これは、暗黙的にこのグラフィックアイテムを親のシーンに追加することに注意してください。アイテムを自分でシーンにadd するべきではありません。

newParent の祖先であるアイテムに対してこの関数を呼び出したときの動作は未定義です。

parentItem() およびchildItems()も参照してください

void QGraphicsItem::setPos(const QPointF &pos)

アイテムの位置を、親座標であるpos に設定します。親を持たないアイテムの場合、pos はシーン座標になります。

アイテムの位置は、親座標における原点(ローカル座標 (0, 0))を表します。

pos(),scenePos(),The Graphics View CoordinateSystemも参照してください

void QGraphicsItem::setPos(qreal x, qreal y)

これはオーバーロードされた関数です。

こ の便宜関数は、 setPos(QPointF(x,y) ) を呼び出すのと等価です。

void QGraphicsItem::setRotation(qreal angle)

Z 軸周りの時計回りの回転angle を度単位で設定します。デフォルト値は 0(つまり、アイテムは回転しません)。負の値を指定すると、項目は反時計回りに回転します。通常、回転角度は (-360, 360) の範囲ですが、この範囲外の値を指定することも可能です(例えば、370 度の回転は 10 度の回転と同じです)。

アイテムは、デフォルトでは (0, 0) であるトランスフォームの原点を中心に回転します。setTransformOriginPoint() を呼び出すことで、別の変換原点を選択できます。

回転は、アイテムのscale(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

rotation()、setTransformOriginPoint()、Transformationsも参照

void QGraphicsItem::setScale(qreal factor)

アイテムのスケールfactor を設定します。デフォルトのスケールファクターは 1.0 です(つまり、アイテムはスケールされません)。スケール・ファクターが 0.0 の場合、項目は 1 点に縮小されます。負のスケールファクターを指定すると、アイテムは反転してミラー化されます(つまり、180 度回転します)。

アイテムは、デフォルトでは (0, 0) の変換原点を中心に拡大縮小されます。setTransformOriginPoint() を呼び出すと、別の変換原点を選択できます。

このスケールは、アイテムのrotation(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

scale()、setTransformOriginPoint()、変換の例も 参照 し て く だ さ い。

void QGraphicsItem::setSelected(bool selected)

selected が true でこの項目が選択可能な場合、この項目は選択され、そうでない場合は非選択になります。

アイテムがグループ内にある場合、グループ全体の選択状態がこの関数によって切り替えられます。グループが選択されている場合は、グループ内のすべての項目も選択され、グループが選択されていない場合は、グループ内のどの項目も選択されません。

選択できるのは、可視で有効な、選択可能な項目だけです。selected が true で、このアイテムが不可視か無効か選択不可の場合、この関数は何もしません。

デフォルトでは、項目を選択することはできません。選択できるようにするには、ItemIsSelectable フラグを設定します。

この関数は利便性のために用意されており、項目の選択状態を個別に切り替えることができる。しかし、より一般的なアイテムの選択方法は、QGraphicsScene::setSelectionArea() を呼び出すことです。 () は、シーン上の指定された領域内のすべての可視アイテム、有効アイテム、選択可能アイテムに対してこの関数を呼び出します。

isSelected() およびQGraphicsScene::selectedItems()も参照して ください。

void QGraphicsItem::setToolTip(const QString &toolTip)

アイテムのツールチップをtoolTip に設定します。toolTip が空の場合、アイテムのツールチップはクリアされます。

toolTip() およびQToolTip参照して ください。

void QGraphicsItem::setTransform(const QTransform &matrix, bool combine = false)

アイテムの現在の変換行列をmatrix に設定します。

combine が真の場合、matrix が現在の行列と組み合わされます。そうでない場合、matrix が現在の行列に置き換わりますcombine はデフォルトでは偽です。

変換されたビューを使用したアイテムとのインタラクションを簡素化するために、QGraphicsItem は mapTo... と mapFrom... 関数を提供し、アイテムとシーンの座標を変換できます。例えば、アイテムの座標をシーンの座標にマップするにはmapToScene() を、シーンの座標からアイテムの座標にマップするにはmapFromScene() を呼び出します。

この変換行列は、アイテムのrotation()、scale()、transformations() と組み合わされて、アイテムの座標系をその親にマッピングする複合変換になります。

transform(),setRotation(),setScale(),setTransformOriginPoint(),The Graphics View Coordinate System, およびTransformationsも参照してください

void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)

アイテム座標系での変換のためのorigin ポイントを設定します。

transformOriginPoint() およびTransformationsも参照してください

void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)

これはオーバーロードされた関数です。

変換の原点を項目座標で設定します。これは、 setTransformOriginPoint(QPointF(x,y)) を呼び出すことと同じです。

setTransformOriginPoint() およびTransformationsも参照

void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)

このアイテムに現在適用されているグラフィックスのリストtransformations (QGraphicsTransform) を設定します。

アイテムの回転や拡大縮小を行いたい場合は、代わりにsetRotation() またはsetScale() を呼び出します。アイテムに任意の変形を設定したい場合は、setTransform() を呼び出します。

QGraphicsTransform は、アイテムに個別のトランスフォーム操作を連鎖的に適用して制御するためのものです。これは特にアニメーションで便利で、各トランスフォーム操作を独立して、あるいは異なる方法で補間する必要があります。

トランスフォームは、アイテムのrotation(),scale(),transform() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

transformations(),scale(),setTransformOriginPoint(),Transformationsも参照

void QGraphicsItem::setVisible(bool visible)

visible が真の場合、アイテムは可視になります。そうでない場合、アイテムは不可視になります。不可視アイテムは描画されず、イベントも受け取らない。特に、マウスイベントは不可視アイテムを通過し、後ろにあるアイテムに送られる。不可視アイテムはまた選択不可能で、入力フォーカスを取ることができず、QGraphicsScene のアイテム位置関数によって検出されません。

マウスをつかんでいる間(つまり、マウスイベントを受け取っている間)にアイテムが見えなくなると、自動的にマウスのつかみは失われ、アイテムを再び見えるようにしてもつかみは回復しません。

同様に、不可視のアイテムはフォーカスを持つことができないので、不可視になったときにアイテムがフォーカスを持っていた場合、フォーカスを失います。

親アイテムを非表示にすると、その子アイテムもすべて非表示になります。親アイテムを表示すると、明示的に非表示にされていない限り、すべての子アイテムが表示されます(つまり、子アイテムで setVisible(false) を呼び出すと、親アイテムが非表示になった後、再び表示されても、再表示されません)。

項目はデフォルトで可視です。新しい項目で setVisible() をコールする必要はありません。

注意: 不透明度が 0 に設定されたアイテムは、不可視アイテムのように扱われますが、依然として可視であるとみなされます: マウスイベントはそれを通過し、QGraphicsView::items() によって返されるアイテムには含まれません。ただし、アイテムはフォーカスを保持します。

isVisible(),show(),hide(),setOpacity()も参照

void QGraphicsItem::setX(qreal x)

アイテムの位置のx 座標を設定する。setPos(x,y()) を呼び出すのと同じ。

x() およびsetPos()も参照

void QGraphicsItem::setY(qreal y)

アイテムの位置のy 座標を設定します。setPos(x(), y) を呼び出すのと同じ。

y()、x()、setPos() も参照

void QGraphicsItem::setZValue(qreal z)

項目の Z 値をz に設定します。 Z 値は、兄弟(隣接)項目の積み重ね順序を決定します。Z 値の高い兄弟アイテムは、常に Z 値の低い別の兄弟アイテムの上に描画されます。

Z値を元に戻すと、アイテムの挿入順で積み重ね順が決まる。

Z値はアイテムのサイズには一切影響しません。

デフォルトのZ値は0です。

zValue()、SortingstackBefore()、ItemStacksBehindParentも参照

[virtual] QPainterPath QGraphicsItem::shape() const

このアイテムの形状を、ローカル座標のQPainterPath として返します。この形状は、衝突検出、ヒットテスト、QGraphicsScene::items() 関数など、さまざまなことに使用されます。

デフォルトの実装では、boundingRect() を呼び出して単純な長方形の形状を返しますが、サブクラスではこの関数を再実装して、長方形以外のアイテムに対してより正確な形状を返すことができます。例えば、丸いアイテムは、より良い衝突検出のために楕円の形状を返すことを選択することができます。例えば

QPainterPath RoundItem::shape() const
{
    QPainterPath path;
    path.addEllipse(boundingRect());
    return path;
}

図形の輪郭は、描画時に使用するペンの幅やスタイルによって変化します。このアウトラインをアイテムのシェイプに含めたい場合は、QPainterPathStroker を使用して、ストロークからシェイプを作成することができます。

この関数は、contains() とcollidesWithPath() のデフォルト実装で呼び出されます。

boundingRect(),contains(),prepareGeometryChange(),QPainterPathStrokerも参照してください

void QGraphicsItem::show()

項目を表示します(項目はデフォルトで表示されます)。

この便宜関数は、setVisible(true) を呼び出すのと同じです。

hide() およびsetVisible() も参照

void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)

このアイテムをsibling の前に積み重ねます。 このアイテムは兄弟アイテムでなければなりません(つまり、2つのアイテムは同じ親アイテムを共有しているか、両方ともトップレベル・アイテムでなければなりません)。sibling はこのアイテムと同じ Z 値でなければならない。そうでない場合、この関数を呼んでも効果はない。

デフォルトでは、すべての兄弟アイテムは挿入順にスタックされます(つまり、最初に追加したアイテムは、次に追加したアイテムの前に描画されます)。2つのアイテムのZ値が異なる場合、Z値の大きいアイテムが上に描画されます。Z値が同じ場合は、挿入順が積み重ね順を決定する。

setZValue()、ItemStacksBehindParentSortingも参照

QGraphicsObject *QGraphicsItem::toGraphicsObject()

クラスが実際にグラフィックス・オブジェクトである場合は、QGraphicsObject にキャストされたグラフィックス項目を返し、そうでない場合は 0 を返します。

const QGraphicsObject *QGraphicsItem::toGraphicsObject() const

クラスが実際にグラフィックス・オブジェクトである場合は、QGraphicsObject にキャストされたグラフィックス項目を返し、そうでない場合は 0 を返します。

QString QGraphicsItem::toolTip() const

アイテムのツールチップを返し、ツールチップが設定されていない場合は空のQString を返します。

setToolTip() およびQToolTipも参照してください

QGraphicsItem *QGraphicsItem::topLevelItem() const

この項目のトップレベル項目を返します。トップレベル項目とは、nullptr を親とする項目の最上位の祖先項目です。 項目に親がない場合は、その項目自身のポインタが返されます(つまり、トップレベル項目はそれ自身のトップレベル項目です)。

parentItem()も参照して ください。

QGraphicsWidget *QGraphicsItem::topLevelWidget() const

アイテムのトップレベルウィジェット(つまり、親がnullptr である、または親がウィジェットでないアイテムの祖先)へのポインタを返し、このアイテムがトップレベルウィジェットを持たない場合はnullptr を返します。アイテムがそれ自身のトップレベルウィジェットである場合、この関数はアイテム自身へのポインタを返す。

QTransform QGraphicsItem::transform() const

このアイテムの変換行列を返します。

この変換行列は、アイテムのrotation(),scale(),transformations() と結合され、アイテムの複合変換行列になります。

デフォルトの変換行列は、単位行列です。

setTransform() およびsceneTransform()も参照して ください。

QPointF QGraphicsItem::transformOriginPoint() const

変換の原点を,アイテムの座標で返します.

デフォルトはQPointF(0,0) です。

setTransformOriginPoint() およびTransformations参照して ください。

QList<QGraphicsTransform *> QGraphicsItem::transformations() const

このアイテムに現在適用されているグラフィックス変換のリストを返します。

QGraphicsTransform は、アイテムに対して、個々のトランスフォーム操作の連鎖を適用し、制御するためのものです。これは特にアニメーションで有用で、各トランスフォーム操作を独立して、あるいは異なる方法で補間する必要があります。

トランスフォームは、アイテムのrotation(),scale(),transform() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。

setTransformations(),scale(),rotation(),transformOriginPoint(),Transformationsも参照

[virtual] int QGraphicsItem::type() const

項目の型を int で返します。QGraphicsItem::Type を参照してください。この型情報は、qgraphicsitem_cast() が型を区別するために使用します。

デフォルトの実装(QGraphicsItem )は、UserType を返します。

カスタム・アイテムでqgraphicsitem_cast() を使用できるようにするには、この関数を再実装し、カスタム・アイテムの型に等しい Type enum 値を宣言します。カスタム項目は、UserType (65536) 以上の値を返す必要があります。

例えば

class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

UserTypeも参照してください

void QGraphicsItem::ungrabKeyboard()

キーボード・グラブを解放します。

grabKeyboard() およびungrabMouse() も参照して ください。

void QGraphicsItem::ungrabMouse()

マウス・グラブを解放します。

grabMouse() およびungrabKeyboard() も参照

void QGraphicsItem::unsetCursor()

この項目のカーソルを消去します。

hasCursor() およびsetCursor() も参照して ください。

void QGraphicsItem::update(const QRectF &rect = QRectF())

このアイテムのrect でカバーされている領域の再描画をスケジュールします。この関数は、アイテムの外観やサイズが変わったときなど、再描画が必要なときにいつでも呼び出すことができます。

この関数は即座に描画を行うのではなく、イベントループに制御が到達した後にQGraphicsView によって処理される描画要求をスケジュールします。アイテムが再描画されるのは、関連するビューに表示されている場合のみです。

アイテムが再描画される副作用として、領域rect に重なる他のアイテムも再描画されることがある。

アイテムが不可視の場合(すなわち、isVisible() がfalse を返す場合)、この関数は何もしません。

paint() およびboundingRect()も参照

void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)

これはオーバーロードされた関数です。

この便利な関数は、 update(QRectF(x,y,width,height)) を呼び出すのと同じです。

[protected] void QGraphicsItem::updateMicroFocus()

アイテムのマイクロフォーカスを更新します。

QInputMethodも参照してください

[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)

イベントevent に対するこのイベントハンドラは、このアイテムのホイールイベントを受け取るために再実装することができます。この関数を再実装すると、event がデフォルトで受け付けられます。

イベントを無視すると(つまり、QEvent::ignore() を呼び出すと)、このアイテムの下にあるすべてのアイテムに伝播します。イベントを受け入れるアイテムがない場合、イベントはシーンによって無視され、ビューに伝搬します(例えば、ビューの垂直スクロールバー)。

デフォルトの実装では、イベントは無視されます。

sceneEvent()も参照してください

QGraphicsWidget *QGraphicsItem::window() const

アイテムのウィンドウを返し、このアイテムがウィンドウを持たない場合はnullptr を返します。アイテムがウィンドウの場合は、それ自身を返します。そうでない場合は、ウィンドウに最も近い祖先を返します。

QGraphicsWidget::isWindow()も参照してください

qreal QGraphicsItem::x() const

この便利関数は、pos().x() を呼び出すのと同じです。

setX() およびy() も参照

qreal QGraphicsItem::y() const

この便利関数は、pos().y() を呼び出すのと同じです。

setY() およびx() も参照

qreal QGraphicsItem::zValue() const

項目の Z 値を返します。Z 値は、兄弟(隣接)アイテムの積み重ね順序に影響します。

デフォルトの Z 値は 0 です。

setZValue()、SortingstackBefore()、およびItemStacksBehindParentも参照して ください。

関連する非メンバー

template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)

item が T 型である場合、指定されたitem を T 型にキャストして返す。そうでない場合、nullptr が返される。

注釈 この関数をカスタム項目で正しく動作させるには、カスタムQGraphicsItem サブクラスごとにtype() 関数を再実装してください。

QGraphicsItem::type() およびQGraphicsItem::UserTypeも参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。