QGraphicsItem Class
QGraphicsItem クラスは、QGraphicsScene 内のすべてのグラフィカルアイテムの基底クラスです。詳細...
| ヘッダー: | #include <QGraphicsItem> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QAbstractGraphicsShapeItem、QGraphicsItemGroup 、QGraphicsLineItem 、QGraphicsObject 、および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 { Type, UserType } |
パブリック関数
| QGraphicsItem(QGraphicsItem*parent= nullptr) | |
| 仮想 | ~QGraphicsItem() |
| bool | acceptDrops() const |
| bool | acceptHoverEvents() const |
| bool | acceptTouchEvents() const |
| Qt::MouseButtons | acceptedMouseButtons() const |
| 仮想 void | advance(intphase) |
| 仮想 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 |
| 仮想 bool | collidesWithItem(const QGraphicsItem*other, Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
| 仮想 bool | collidesWithPath(const QPainterPath&path, Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | collidingItems(Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
| QGraphicsItem * | commonAncestorItem(const QGraphicsItem*other) const |
| 仮想 bool | contains(const QPointF&point) const |
| QCursor | cursor() const |
| QVariant | data(intkey) const |
| QTransform | deviceTransform(const QTransform&viewportTransform) const |
| qreal | effectiveOpacity() const |
| void | ensureVisible(const QRectF&rect= QRectF(), intxmargin= 50, intymargin= 50) |
| void | ensureVisible(qrealx, qrealy, qrealw, qrealh, intxmargin= 50, intymargin= 50) |
| bool | filtersChildEvents() const |
| QGraphicsItem::GraphicsItemFlags | flags() const |
| QGraphicsItem * | focusItem() const |
| QGraphicsItem * | focusProxy() const |
| void | grabKeyboard() |
| void | grabMouse() |
| QGraphicsEffect * | graphicsEffect() const |
| QGraphicsItemGroup *() const | 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(qrealx, qrealy, qrealw, qrealh) const |
| 仮想 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, qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapFromItem(const QGraphicsItem*item, qrealx, qrealy) 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(qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapFromParent(qrealx, qrealy) 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(qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapFromScene(qrealx, qrealy) const |
| QRectF | mapRectFromItem(const QGraphicsItem*item, const QRectF&rect) const |
| QRectF | mapRectFromItem(const QGraphicsItem*item, qrealx, qrealy, qrealw, qrealh) const |
| QRectF | mapRectFromParent(const QRectF&rect) const |
| QRectF | mapRectFromParent(qrealx, qrealy, qrealw, qrealh) const |
| QRectF | mapRectFromScene(const QRectF&rect) const |
| QRectF | mapRectFromScene(qrealx, qrealy, qrealw, qrealh) const |
| QRectF | mapRectToItem(const QGraphicsItem*item, const QRectF&rect) const |
| QRectF | mapRectToItem(const QGraphicsItem*item, qrealx, qrealy, qrealw, qrealh) const |
| QRectF | mapRectToParent(const QRectF&rect) const |
| QRectF | mapRectToParent(qrealx, qrealy, qrealw, qrealh) const |
| QRectF | mapRectToScene(const QRectF&rect) const |
| QRectF | mapRectToScene(qrealx, qrealy, qrealw, qrealh) 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, qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapToItem(const QGraphicsItem*item, qrealx, qrealy) 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(qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapToParent(qrealx, qrealy) 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(qrealx, qrealy, qrealw, qrealh) const |
| QPointF | mapToScene(qrealx, qrealy) const |
| void | moveBy(qrealdx, qrealdy) |
| 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 *() const | 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(qrealdx, qrealdy, const QRectF&rect= QRectF()) |
| void | setAcceptDrops(boolon) |
| void | setAcceptHoverEvents(boolenabled) |
| void | setAcceptTouchEvents(boolenabled) |
| void | setAcceptedMouseButtons(Qt::MouseButtonsbuttons) |
| void | setActive(boolactive) |
| void | setBoundingRegionGranularity(qrealgranularity) |
| void | setCacheMode(QGraphicsItem::CacheModemode, const QSize&logicalCacheSize= QSize()) |
| void | setCursor(const QCursor&cursor) |
| void | setData(intkey, const QVariant&value) |
| void | setEnabled(boolenabled) |
| void | setFiltersChildEvents(boolenabled) |
| void | setFlag(QGraphicsItem::GraphicsItemFlagflag, boolenabled= true) |
| void | setFlags(QGraphicsItem::GraphicsItemFlagsflags) |
| void | setFocus(Qt::FocusReasonfocusReason= Qt::OtherFocusReason) |
| void | setFocusProxy(QGraphicsItem*item) |
| void | setGraphicsEffect(QGraphicsEffect*effect) |
| void | setGroup(QGraphicsItemGroup*group) |
| void | setInputMethodHints(Qt::InputMethodHintshints) |
| void | setOpacity(qrealopacity) |
| void | setPanelModality(QGraphicsItem::PanelModalitypanelModality) |
| void | setParentItem(QGraphicsItem*newParent) |
| void | setPos(const QPointF&pos) |
| void | setPos(qrealx, qrealy) |
| void | setRotation(qrealangle) |
| void | setScale(qreal係数) |
| void | setSelected(boolselected) |
| void | setToolTip(const QString&toolTip) |
| void | setTransform(const QTransform&matrix, boolcombine= false) |
| void | setTransformOriginPoint(const QPointF&origin) |
| void | setTransformOriginPoint(qrealx, qrealy) |
| void | setTransformations(const QList<QGraphicsTransform *>&transformations) |
| void | setVisible(boolvisible) |
| void | setX(qrealx) |
| void | setY(qrealy) |
| void | setZValue(qrealz) |
| 仮想 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 |
| 仮想 int | type() const |
| void | ungrabKeyboard() |
| void | ungrabMouse() |
| void | unsetCursor() |
| void | update(const QRectF&rect= QRectF()) |
| void | update(qrealx, qrealy, qrealwidth, qrealheight) |
| 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) |
詳細な説明
独自のカスタムアイテムを作成するための軽量な基盤を提供します。これには、アイテムのジオメトリの定義、衝突検出、描画の実装、およびイベントハンドラを通じたアイテムとの相互作用が含まれます。QGraphicsItemは、Graphics View Frameworkの一部です

利便性を高めるため、Qt では最も一般的な形状に対応した一連の標準グラフィックス・アイテムが用意されています。これらは以下の通りです。
- QGraphicsEllipseItem 楕円アイテムを提供します
- QGraphicsLineItem 線アイテムを提供します
- QGraphicsPathItem 任意のパスアイテムを提供します
- QGraphicsPixmapItem ピクマップアイテムを提供します
- QGraphicsPolygonItem 多角形アイテムを提供します
- QGraphicsRectItem 矩形アイテムを提供します
- QGraphicsSimpleTextItem 単純なテキストラベル項目を提供します
- QGraphicsTextItem 高度なテキストブラウザ項目を提供します
項目の幾何学的情報はすべて、そのローカル座標系に基づいています。項目の位置を表す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つの方法で行うことができます。
- shape() を再実装してアイテムの正確な形状を返し、形状同士の交差判定にはcollidesWithItem() のデフォルトの実装を利用します。形状が複雑な場合、この方法は処理負荷が高くなる可能性があります。
- collidesWithItem() を再実装し、独自のアイテムおよび形状の衝突アルゴリズムを実装します。
contains() 関数を呼び出すことで、アイテムが特定の点を包含しているかどうかを判定できます。この関数は、アイテム側で再実装することも可能です。contains() のデフォルトの動作は、shape() の呼び出しに基づいています。
アイテムは他のアイテムを包含することも、他のアイテムに包含されることもあります。すべてのアイテムは、親アイテムと子アイテムのリストを持つことができます。アイテムに親が存在しない場合を除き、その位置は親の座標系(つまり、親のローカル座標系)で表されます。親アイテムは、その位置と変形の両方をすべての子アイテムに伝播します。

変形
QGraphicsItem は、基本位置である `pos()` に加えて、射影変換もサポートしています。アイテムの変換を変更するには、いくつかの方法があります。 単純な変換の場合は、便利関数であるsetRotation() またはsetScale() のいずれかを呼び出すか、任意の変換行列をsetTransform() に渡すことができます。高度な変換制御を行うには、setTransformations() を呼び出して、複数の変換を組み合わせて設定するオプションもあります。
アイテムの変換は親から子へと累積されるため、親アイテムと子アイテムの両方が 90 度回転している場合、子アイテムの合計変換角度は 180 度になります。同様に、アイテムの親が元のサイズの 2 倍に拡大されている場合、その子アイテムも 2 倍の大きさになります。 アイテムの変換は、そのアイテム自身のローカルジオメトリには影響しません。すべてのジオメトリ関数(例:contains()、update()、およびすべてのマッピング関数)は、引き続きローカル座標系で動作します。 利便性のため、QGraphicsItem は、項目の総変形行列(その位置およびすべての親項目の位置と変形を含む)を返す関数 `sceneTransform()` と、シーン座標系におけるその位置を返す関数 `scenePos()` を提供しています。項目の行列をリセットするには、`resetTransform()` を呼び出します。
特定の変形操作は、適用する順序によって異なる結果をもたらすことがあります。 たとえば、スケール変換を適用してから回転変換を適用すると、回転変換を先に適用した場合とは異なる結果になることがあります。ただし、QGraphicsItem に対して変換プロパティを設定する順序は、結果となる変換には影響しません。QGraphicsItem は常に、固定された定義済みの順序でプロパティを適用します:
- アイテムの基本変換が適用されます (transform())
- アイテムの変換リストが順序通りに適用されます(transformations())
- アイテムは、その変換原点に対して回転されます(rotation()、transformOriginPoint())
- アイテムは、そのトランスフォームの原点に対してスケーリングされます(scale()、transformOriginPoint())
描画
paint() 関数は、QGraphicsView によって呼び出され、アイテムの内容を描画します。アイテム自体には背景やデフォルトの塗りつぶし色はありません。この関数で明示的に描画されていない領域については、アイテムの背後に表示されているものが透けて見えます。update() を呼び出すことで再描画をスケジュールでき、必要に応じて再描画が必要な矩形を引数として渡すこともできます。アイテムがビュー内で表示されているかどうかに応じて、アイテムが再描画される場合とされない場合があります。QGraphicsItem にはQWidget::repaint() に相当する関数は存在しません。
アイテムはビューによって描画され、親アイテムから始まり、スタック順が昇順になるように子アイテムが描画されます。setZValue() を呼び出すことで項目のスタック順を設定でき、zValue() を呼び出すことでそれを確認できます。z 値が小さい項目は、z 値が大きい項目よりも先に描画されます。スタック順は兄弟項目に適用されます。親項目は常に子項目よりも先に描画されます。
ソート
すべてのアイテムは、定義された安定した順序で描画され、この順序によって、シーンをクリックした際にどのアイテムが最初にマウス入力を受け取るかが決まります。通常、アイテムはシーンの論理構造に従った「自然な順序」で並んでいるため、ソートについて気にする必要はありません。
アイテムの子要素は親要素の上に重ねられ、兄弟アイテムは挿入順(つまり、シーンに追加された順、または同じ親要素に追加された順)で重ねられます。 アイテムAを追加してからBを追加すると、BはAの上に配置されます。その後Cを追加すると、アイテムの積み重ね順序はA、B、Cの順になります。

この例は、「ドラッグ&ドロップロボット」の例におけるロボットのすべての手足の重ね順を示しています。胴体がルートアイテム(他のすべてのアイテムは胴体の子または子孫)であるため、最初に描画されます。 次に、頭部が描画されます。これは、胴体の子要素リストの最初のアイテムだからです。その後、左上腕が描画されます。下腕は上腕の子要素であるため、次に下腕が描画され、続いて上腕の次の兄弟要素である右上腕が描画され、というように続きます。
上級ユーザー向けに、アイテムの並べ替え方法を変更する方法があります:
- アイテムに対してsetZValue()を呼び出すことで、他の兄弟アイテムの真上または真下に明示的に配置することができます。アイテムのデフォルトのZ値は0です。Z値が同じアイテムは、挿入順に従って重ねられます。
- stackBefore() を呼び出すことで、子要素のリストの順序を変更できます。これにより、挿入順序が直接変更されます。
- ItemStacksBehindParent フラグを設定すると、子アイテムを親アイテムの後ろに配置できます。
2つの兄弟項目の重ね順は、各項目の子項目や子孫項目にも適用されます。したがって、ある項目が別の項目より上にある場合、その項目のすべての子項目も、もう一方の項目のすべての子項目より上になります。
イベント
QGraphicsItemは、仮想関数sceneEvent()を通じて、QGraphicsScene からイベントを受け取ります。この関数は、最も一般的なイベントを一連の便利なイベントハンドラに分配します:
- contextMenuEvent() はコンテキストメニューのイベントを処理します
- focusInEvent() およびfocusOutEvent() は、フォーカスの取得および喪失イベントを処理します
- hoverEnterEvent()、hoverMoveEvent()、およびhoverLeaveEvent() は、ホバーの進入、移動、離脱イベントを処理します
- inputMethodEvent() は、アクセシビリティ対応のため、入力イベントを処理します
- keyPressEvent() およびkeyReleaseEvent() は、キーの押下および離しイベントを処理します
- mousePressEvent(),mouseMoveEvent(),mouseReleaseEvent(), およびmouseDoubleClickEvent() は、マウスの押下、移動、離し、クリック、およびダブルクリックイベントを処理します
イベントフィルタをインストールすることで、他の任意のアイテムのイベントをフィルタリングできます。この機能は、QObject のサブクラスでのみ機能するQtの通常のイベントフィルタ(QObject::installEventFilter()を参照)とは別物です。installSceneEventFilter()を呼び出して、あるアイテムを別のアイテムのイベントフィルタとしてインストールすると、フィルタリングされたイベントは仮想関数sceneEventFilter()によって受信されます。removeSceneEventFilter() を呼び出すことで、アイテムのイベントフィルタを削除できます。
カスタムデータ
カスタムアイテムであれ標準アイテムであれ、アイテムにカスタムデータを登録しておくと便利な場合があります。 任意のアイテムに対してsetData()を呼び出すことで、キーと値のペア(キーは整数、値はQVariant )を使用してデータを格納できます。アイテムからカスタムデータを取得するには、data()を呼び出します。この機能はQt自体には一切影響せず、ユーザーの利便性のために提供されています。
QGraphicsScene 、QGraphicsView 、およびGraphics View Frameworkも参照してください 。
メンバ型のドキュメント
enum QGraphicsItem::CacheMode
この列挙型は、QGraphicsItem のキャッシュモードを表します。キャッシュは、オフスクリーンのピクセルバッファを割り当ててそこにレンダリングを行うことで、レンダリングを高速化するために使用されます。このバッファは、アイテムの再描画が必要になった際に再利用できます。一部のペイントデバイスでは、キャッシュがグラフィックスメモリに直接格納されるため、レンダリングが非常に高速になります。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsItem::NoCache | 0 | デフォルト。すべてのアイテムのキャッシュが無効になります。アイテムの再描画が必要になるたびに、QGraphicsItem::paint() が呼び出されます。 |
QGraphicsItem::ItemCoordinateCache | 1 | アイテムの論理(ローカル)座標系に対してキャッシュが有効になります。QGraphicsItem は、QGraphicsItem::setCacheMode() に渡すことができる、サイズ/解像度を設定可能なオフスクリーンピクセルバッファを作成します。キャッシュの解像度やアイテムの変形によっては、通常、レンダリング品質が低下します。 アイテムが初めて再描画される際、キャッシュ内にレンダリングされ、その後のすべてのエクスポーズでそのキャッシュが再利用されます。また、アイテムが変形された場合でも、キャッシュは再利用されます。キャッシュの解像度を調整するには、setCacheMode()を再度呼び出します。 |
QGraphicsItem::DeviceCoordinateCache | 2 | キャッシュは、デバイス座標系でペイントデバイスレベルで有効になります。このモードは、移動は可能ですが、回転、拡大縮小、せん断が行われないアイテム向けです。アイテムに直接的または間接的に変形が適用された場合、キャッシュは自動的に再生成されます。ItemCoordinateCacheModeとは異なり、DeviceCoordinateCacheは常に最高品質でレンダリングを行います。 |
QGraphicsItem::setCacheMode()も参照してください 。
enum QGraphicsItem::GraphicsItemChange
この列挙型は、QGraphicsItem::itemChange() によって通知される状態の変化を表します。通知は状態が変化した際に送信され、場合によっては調整を行うことができます(詳細については、各変更に関するドキュメントを参照してください)。
注:itemChange() 内でQGraphicsItem 自体に対して関数を呼び出す際は注意が必要です。特定の関数呼び出しにより、意図しない再帰が発生する可能性があるためです。例えば、ItemPositionChange 通知を受け取った際に、itemChange() 内でsetPos() を呼び出すことはできません。setPos() 関数が再度itemChange(ItemPositionChange) を呼び出してしまうためです。代わりに、itemChange() から調整後の新しい位置を返すようにしてください。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsItem::ItemEnabledChange | 3 | アイテムの有効状態が変更されます。アイテムが現在有効な場合は無効になり、その逆も同様です。value引数は新しい有効状態(つまり、trueまたはfalse)です。この通知が配信される際、itemChange()内でsetEnabled()を呼び出さないでください。代わりに、itemChange()から新しい状態を返すことができます。 |
QGraphicsItem::ItemEnabledHasChanged | 13 | 項目の有効状態が変更されました。value引数は新しい有効状態(つまりtrueまたはfalse)です。この通知が配信される際、itemChange()内でsetEnabled()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemPositionChange | 0 | 項目の位置が変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっており、かつ項目のローカル位置が親に対する相対位置で変更された場合(つまり、setPos()またはmoveBy()の呼び出しの結果として)送信されます。value引数は新しい位置(QPointF )です。pos() を呼び出すことで、元の位置を取得できます。この通知が配信されている間、itemChange() 内でsetPos() やmoveBy() を呼び出さないでください。代わりに、itemChange() から調整後の新しい位置を返すことができます。この通知の後、位置が変更された場合、QGraphicsItem は直ちに ItemPositionHasChanged 通知を送信します。 |
QGraphicsItem::ItemPositionHasChanged | 9 | アイテムの位置が変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっており、親に対するアイテムのローカル位置が変更された後に送信されます。value引数は新しい位置(pos()と同じ)であり、QGraphicsItem はこの通知の戻り値を無視します(つまり、読み取り専用の通知です)。 |
QGraphicsItem::ItemTransformChange | 8 | アイテムの変換行列が変更されます。この通知は、ItemSendsGeometryChanges フラグが有効になっており、かつアイテムのローカル変換行列が変更されたとき(つまり、setTransform()の呼び出しの結果として)送信されます。value引数は新しい行列(つまりQTransform )です。古い行列を取得するには、transform()を呼び出してください。 この通知が配信されている間は、setTransform() を呼び出したり、itemChange() で変換プロパティを設定したりしないでください。代わりに、itemChange() から新しい行列を返すことができます。変換プロパティを変更した場合、この通知は送信されません。 |
QGraphicsItem::ItemTransformHasChanged | 10 | setTransform が呼び出されたか、変換プロパティのいずれかが変更されたことにより、項目の変換行列が変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっている場合、かつ項目のローカル変換行列が変更された後に送信されます。 value引数は新しい行列です(transform()と同じ)。また、QGraphicsItem は、この通知の戻り値を無視します(つまり、読み取り専用の通知です)。 |
QGraphicsItem::ItemRotationChange | 28 | アイテムの回転プロパティが変更されます。この通知は、ItemSendsGeometryChanges フラグが有効になっている場合、かつアイテムの回転プロパティが変更されたとき(つまり、setRotation()の呼び出しの結果として)送信されます。value引数は新しい回転値(double型)です。以前の回転値を取得するには、rotation()を呼び出してください。 この通知が配信されている間は、itemChange() 内でsetRotation() を呼び出さないでください。代わりに、itemChange() から新しい回転値を返すことができます。 |
QGraphicsItem::ItemRotationHasChanged | 29 | アイテムのrotationプロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっており、かつアイテムのrotationプロパティが変更された後に送信されます。value引数は新しいrotation(つまりdouble型)であり、QGraphicsItem は、この通知の戻り値(つまり読み取り専用の通知)を無視します。 この通知が配信されるため、itemChange() 内でsetRotation() を呼び出さないでください。 |
QGraphicsItem::ItemScaleChange | 30 | 項目の scale プロパティが変更されます。この通知は、ItemSendsGeometryChanges フラグが有効になっている場合、および項目の scale プロパティが変更されたとき(setScale()の呼び出しの結果など)に送信されます。value 引数は新しいスケール(double型)です。以前のスケールを取得するには、scale()を呼び出してください。 この通知が配信される際、itemChange() 内でsetScale() を呼び出さないでください。代わりに、itemChange() から新しいスケールを返すことができます。 |
QGraphicsItem::ItemScaleHasChanged | 31 | 項目のスケールプロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっており、項目のスケールプロパティが変更された後に送信されます。value引数は新しいスケール(つまりdouble型)であり、QGraphicsItem はこの通知の戻り値を無視します(つまり、読み取り専用の通知です)。 この通知が配信されるため、itemChange() 内でsetScale() を呼び出さないでください。 |
QGraphicsItem::ItemTransformOriginPointChange | 32 | 項目の「transform origin point」プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっている場合、および項目の「transform origin point」プロパティが変更されたとき(つまり、setTransformOriginPoint()の呼び出しの結果として)送信されます。 value引数は新しい原点(つまり、QPointF )です。以前の原点を取得するには、transformOriginPoint()を呼び出してください。この通知が配信される際、itemChange()内でsetTransformOriginPoint()を呼び出さないでください。代わりに、itemChange()から新しい変換原点を返すことができます。 |
QGraphicsItem::ItemTransformOriginPointHasChanged | 33 | アイテムのトランスフォーム原点プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効になっており、かつアイテムのトランスフォーム原点プロパティが変更された後に送信されます。value引数は新しい原点(つまり、QPointF )であり、QGraphicsItem はこの通知の戻り値を無視します(つまり、読み取り専用の通知です)。 この通知が配信されるため、itemChange() 内でsetTransformOriginPoint() を呼び出さないでください。 |
QGraphicsItem::ItemSelectedChange | 4 | setSelected項目の選択状態が変更されます。項目が現在選択されている場合は選択解除され、その逆も同様です。value引数は新しい選択状態(つまりtrueまたはfalse)です。この通知が配信される際、itemChange()内で ()を呼び出さないでください。代わりに、itemChange()から新しい選択状態を返すことができます。 |
QGraphicsItem::ItemSelectedHasChanged | 14 | 項目の選択状態が変更されました。value 引数は新しい選択状態(つまり true または false)です。この通知はitemChange() 内で配信されるため、同関数内でsetSelected() を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemVisibleChange | 2 | 項目の表示状態が変更されます。項目が現在表示されている場合は非表示になり、その逆も同様です。value引数は新しい表示状態(つまり、trueまたはfalse)です。この通知が配信される際、itemChange()内でsetVisible()を呼び出さないでください。代わりに、itemChange()から新しい表示状態を返すことができます。 |
QGraphicsItem::ItemVisibleHasChanged | 12 | 項目の表示状態が変更されました。value引数は新しい表示状態(つまりtrueまたはfalse)です。この通知は配信されるため、itemChange()内でsetVisible()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemParentChange | 5 | 項目の親が変更されました。value引数は新しい親項目(つまり、QGraphicsItem へのポインタ)です。この通知が配信される際、itemChange()内でsetParentItem()を呼び出さないでください。代わりに、itemChange()から新しい親を返すことができます。 |
QGraphicsItem::ItemParentHasChanged | 15 | この項目の親が変更されました。value引数は新しい親(つまり、QGraphicsItem へのポインタ)です。この通知が配信される際、itemChange()内でsetParentItem()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemChildAddedChange | 6 | このアイテムに子アイテムが追加されました。value引数は新しい子アイテム(つまり、QGraphicsItem へのポインタ)です。 この通知が配信される際、このアイテムを他のアイテムのsetParentItem()関数に渡さないでください。戻り値は使用されません。この通知では何も調整することはできません。この通知が送信される時点で、新しい子アイテムが完全に構築されていない可能性があることに注意してください。子アイテムに対して純粋仮想関数を呼び出すと、クラッシュを引き起こす可能性があります。 |
QGraphicsItem::ItemChildRemovedChange | 7 | このアイテムから子アイテムが削除されます。value引数は、削除されようとしている子アイテムです(つまり、QGraphicsItem ポインタ)。戻り値は使用されません。この通知では何も調整することはできません。 |
QGraphicsItem::ItemSceneChange | 11 | アイテムが新しいシーンに移動されます。この通知は、アイテムが初期シーンに追加されたとき、および削除されたときにも送信されます。アイテムのscene()は元のシーンであり、アイテムがまだシーンに追加されていない場合はnullptr となります。 value引数は新しいシーン(つまり、QGraphicsScene ポインタ)であり、アイテムがシーンから削除された場合はnullptr となります。 この通知が配信されている間は、このアイテムをQGraphicsScene::addItem()に渡してこの変更をオーバーライドしないでください。代わりに、itemChange()から新しいシーンを返すことができます。この機能は慎重に使用してください。シーンの変更に異議を唱えると、すぐに望ましくない再帰を引き起こす可能性があります。 |
QGraphicsItem::ItemSceneHasChanged | 16 | アイテムのシーンが変更されました。アイテムのscene()が新しいシーンです。この通知は、アイテムが初期シーンに追加されたときや、シーンから削除されたときにも送信されます。value引数は新しいシーン(つまり、QGraphicsScene へのポインタ)です。 この通知が配信される際、itemChange() 内で setScene() を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemCursorChange | 17 | アイテムのカーソルが変更されました。value引数は新しいカーソル(つまり、QCursor )です。この通知が配信される際、itemChange()内でsetCursor()を呼び出さないでください。代わりに、itemChange()から新しいカーソルを返すことができます。 |
QGraphicsItem::ItemCursorHasChanged | 18 | 項目のカーソルが変更されました。value引数は新しいカーソル(つまり、QCursor )です。この通知が配信された時点でsetCursor()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemToolTipChange | 19 | 項目のツールチップが変更されました。value引数は新しいツールチップ(つまり、QToolTip )です。この通知が配信される際、itemChange()内でsetToolTip()を呼び出さないでください。代わりに、itemChange()から新しいツールチップを返すことができます。 |
QGraphicsItem::ItemToolTipHasChanged | 20 | 項目のツールチップが変更されました。value引数は新しいツールチップ(つまりQToolTip )です。この通知が配信されている間は、setToolTip()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemFlagsChange | 21 | 項目のフラグが変更されました。value引数は新しいフラグ(つまりsetFlags )です。この通知が配信される際、itemChange()内で ()を呼び出さないでください。代わりに、itemChange()から新しいフラグを返すことができます。 |
QGraphicsItem::ItemFlagsHaveChanged | 22 | 項目のフラグが変更されました。value引数は新しいフラグ(つまりquint32)です。この通知が配信される際、itemChange()内でsetFlags()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemZValueChange | 23 | 項目の Z 値が変更されました。value 引数は新しい Z 値(つまり、double 型)です。この通知が配信される際、itemChange() 内でsetZValue() を呼び出さないでください。代わりに、itemChange() から新しい Z 値を返すことができます。 |
QGraphicsItem::ItemZValueHasChanged | 24 | アイテムのZ値が変更されました。value引数は新しいZ値(つまりdouble型)です。この通知が配信される際、setZValue()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemOpacityChange | 25 | 項目の不透明度が変更されました。value引数は新しい不透明度(つまりdouble型)です。この通知が配信された際、itemChange()内でsetOpacity()を呼び出さないでください。代わりに、itemChange()から新しい不透明度を返すことができます。 |
QGraphicsItem::ItemOpacityHasChanged | 26 | アイテムの不透明度が変更されました。value引数は新しい不透明度(つまりdouble型)です。この通知が配信される際、setOpacity()を呼び出さないでください。戻り値は無視されます。 |
QGraphicsItem::ItemScenePositionHasChanged | 27 | アイテムのシーン上の位置が変更されました。この通知は、ItemSendsScenePositionChanges フラグが有効になっており、かつアイテムのシーン上の位置が変更された後(つまり、アイテム自体の位置や変換、あるいは任意の親要素の位置や変換が変更された後)に送信されます。 value引数は新しいシーン上の位置です(scenePos()と同じ)。また、QGraphicsItem は、この通知の戻り値を無視します(つまり、読み取り専用の通知です)。 |
enum QGraphicsItem::GraphicsItemFlag
flags QGraphicsItem::GraphicsItemFlags
この列挙型は、アイテムの挙動におけるさまざまな機能をオン/オフするために、アイテムに設定できるさまざまなフラグを表しています。
デフォルトでは、すべてのフラグは無効になっています。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsItem::ItemIsMovable | 0x1 | このアイテムは、マウスを使用したインタラクティブな移動に対応しています。アイテムをクリックしてドラッグすると、アイテムはマウスカーソルとともに移動します。 アイテムに子要素がある場合、すべての子要素も一緒に移動します。アイテムが選択範囲の一部である場合、選択されているすべてのアイテムも一緒に移動します。この機能は、QGraphicsItem のマウスイベントハンドラのベース実装を通じて、利便性のために提供されています。 |
QGraphicsItem::ItemIsSelectable | 0x2 | このアイテムは選択機能をサポートしています。この機能を有効にすると、setSelected() によってアイテムの選択状態を切り替えることが可能になります。また、QGraphicsScene::setSelectionArea() の呼び出し、アイテムのクリック、またはQGraphicsView でのラバーバンド選択の結果として、アイテムが自動的に選択されるようになります。 |
QGraphicsItem::ItemIsFocusable | 0x4 | このアイテムはキーボード入力フォーカスをサポートしています(つまり、入力アイテムです)。このフラグを有効にすると、アイテムがフォーカスを受け取るようになり、その結果、QGraphicsItem::keyPressEvent() およびQGraphicsItem::keyReleaseEvent() へのキーイベントの配信が可能になります。 |
QGraphicsItem::ItemClipsToShape | 0x8 | このアイテムは、自身の形状に合わせてクリッピングを行います。アイテムは、その形状の外側では描画を行えず、マウス、タブレット、ドラッグ&ドロップ、またはホバーイベントを受け取ることもできません。デフォルトでは無効になっています。この動作は、QGraphicsView::drawItems() または QGraphicsScene::drawItems() によって強制されます。このフラグは Qt 4.3 で導入されました。 |
QGraphicsItem::ItemClipsChildrenToShape | 0x10 | このアイテムは、すべての子アイテムの描画を自身の形状にクリップします。 このアイテムの直接または間接の子であるアイテムは、このアイテムの形状の外側で描画を行うことができません。デフォルトでは、このフラグは無効になっており、子アイテムはどこでも描画できます。この動作は、QGraphicsView::drawItems() または QGraphicsScene::drawItems() によって強制されます。このフラグは Qt 4.3 で導入されました。 注: この フラグは ItemContainsChildrenInShape と似ていますが、さらに子アイテムをクリッピングすることで包含を強制します。 |
QGraphicsItem::ItemIgnoresTransformations | 0x20 | このアイテムは、継承された変形を無視します(つまり、その位置は依然として親に固定されていますが、親やビューの回転、ズーム、シア変形は無視されます)。このフラグは、テキストラベルアイテムを水平に保ち、拡大縮小しないようにするのに役立ちます。これにより、ビューが変形されても読み取り可能になります。 このフラグが設定されている場合、アイテムのビュージオメトリとシーンジオメトリは個別に管理されます。座標のマッピングやビュー内での衝突検出を行うには、deviceTransform() を呼び出す必要があります。デフォルトでは、このフラグは無効になっています。このフラグは Qt 4.3 で導入されました。 注: このフラグが 設定されていても、 アイテム自体をスケーリングすることは可能であり、そのスケーリング変換はアイテムの子要素にも影響します。 |
QGraphicsItem::ItemIgnoresParentOpacity | 0x40 | このアイテムは、親の不透明度を無視します。アイテムの有効な不透明度はアイテム自身の不透明度と同じであり、親の不透明度とは組み合わされません。このフラグを有効にすると、親が半透明であっても、アイテムは絶対的な不透明度を維持できます。このフラグは Qt 4.5 で導入されました。 |
QGraphicsItem::ItemDoesntPropagateOpacityToChildren | 0x80 | アイテムは、その不透明度を子要素に伝播しません。このフラグを使用すると、子要素の不透明度に影響を与えない半透明のアイテムを作成できます。このフラグは Qt 4.5 で導入されました。 |
QGraphicsItem::ItemStacksBehindParent | 0x100 | アイテムは親アイテムの後ろに配置されます。デフォルトでは、子アイテムは親アイテムの上に配置されます。しかし、このフラグを設定すると、子アイテムは親アイテムの後ろに配置されます。このフラグは、ドロップシャドウ効果や、親アイテムの上に描画することなく親アイテムのジオメトリに従う装飾オブジェクトに役立ちます。このフラグは Qt 4.5 で導入されました。 |
QGraphicsItem::ItemUsesExtendedStyleOption | 0x200 | このアイテムは、QStyleOptionGraphicsItem 内のexposedRect のいずれかを使用します。デフォルトでは、exposedRect はアイテムのboundingRect()で初期化されます。スタイルオプションをよりきめ細かく設定するには、このフラグを有効にしてください。より高い値が必要な場合は、QStyleOptionGraphicsItem::levelOfDetailFromTransform()を使用してください。このフラグはQt 4.6で導入されました。 |
QGraphicsItem::ItemHasNoContents | 0x400 | このアイテムは何も描画しません(つまり、アイテムに対してpaint() を呼び出しても何の効果もありません)。Graphics View が不必要な描画準備を行わないようにするため、描画を必要としないアイテムにはこのフラグを設定する必要があります。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemSendsGeometryChanges | 0x800 | このアイテムは、ItemPositionChange 、ItemPositionHasChanged 、ItemTransformChange 、ItemTransformHasChanged 、ItemRotationChange 、ItemRotationHasChanged 、ItemScaleChange 、ItemScaleHasChanged 、ItemTransformOriginPointChange 、およびItemTransformOriginPointHasChanged に対する `itemChange()` 通知を有効にします。パフォーマンス上の理由から、これらの通知はデフォルトでは無効になっています。位置や変換の変更に関する通知を受信するには、このフラグを有効にする必要があります。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemAcceptsInputMethod | 0x1000 | このアイテムは、アジア言語で一般的に使用される入力方式をサポートしています。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemNegativeZStacksBehindParent | 0x2000 | このアイテムの z 値が負の場合、自動的に親アイテムの背後に積み重ねられます。このフラグを有効にすると、setZValue() によって ItemStacksBehindParent のオン/オフを切り替えることができます。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemIsPanel | 0x4000 | このアイテムはパネルです。パネルは、アクティブ化および内部のフォーカス処理を提供します。一度にアクティブにできるパネルは 1 つだけです(QGraphicsItem::isActive() を参照)。アクティブなパネルがない場合、QGraphicsScene はパネル以外のすべてのアイテムをアクティブにします。ウィンドウアイテム(つまり、QGraphicsItem::isWindow() の戻り値がtrue であるもの)はパネルです。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemSendsScenePositionChanges | 0x10000 | このアイテムは、ItemScenePositionHasChanged に対してitemChange() 通知を有効にします。パフォーマンス上の理由から、これらの通知はデフォルトで無効になっています。シーンの位置変更に関する通知を受け取るには、このフラグを有効にする必要があります。このフラグは Qt 4.6 で導入されました。 |
QGraphicsItem::ItemContainsChildrenInShape | 0x80000 | このフラグは、アイテムの直接または間接の子アイテムすべてが、アイテムの形状内でのみ描画されることを示します。ItemClipsChildrenToShapeとは異なり、この制限は強制されません。 描画がアイテムの形状内に確実に収まることを手動で保証し、クリップの強制に伴うオーバーヘッドを回避したい場合は、ItemContainsChildrenInShape を設定してください。このフラグを設定すると、より効率的な描画と衝突検出が可能になります。このフラグはデフォルトで無効になっています。 注: このフラグと ItemClipsChildrenToShape の両方が設定されている場合 、クリップが強制されます。これは、ItemClipsChildrenToShape のみを設定した場合と同等です。 |
このフラグは Qt 5.4 で導入されました。
GraphicsItemFlags 型は、QFlags<GraphicsItemFlag> の typedef です。これは、GraphicsItemFlag 値の論理和(OR)の組み合わせを格納します。
enum QGraphicsItem::PanelModality
この列挙型は、モーダルパネルの挙動を指定します。モーダルパネルとは、他のパネルへの入力をブロックするパネルのことです。なお、モーダルパネルの子要素である項目はブロックされません。
値は以下の通りです:
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsItem::NonModal | 0 | パネルはモーダルではなく、他のパネルへの入力をブロックしません。これはパネルのデフォルト値です。 |
QGraphicsItem::PanelModal | 1 | パネルは単一のアイテム階層に対してモーダルであり、その親ペイン、すべての祖父母パネル、および親パネルと祖父母パネルのすべての兄弟パネルへの入力をブロックします。 |
QGraphicsItem::SceneModal | 2 | ウィンドウはシーン全体に対してモーダルであり、すべてのパネルへの入力をブロックします。 |
関連項目: QGraphicsItem::setPanelModality()、QGraphicsItem::panelModality()、およびQGraphicsItem::ItemIsPanel 。
[anonymous] enum
Qt の標準グラフィックアイテムクラスにおける仮想関数 `type()` が返す値。Qt のこうした標準グラフィックアイテムクラスはすべて、`Type` に対して一意の値が割り当てられています。例えば、QGraphicsPathItem::type() が返す値は 2 です。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsItem::Type | 1 | |
QGraphicsItem::UserType | 65536 | `QGraphicsItem`のカスタムサブクラスにおける仮想関数type()が返す最小値。 |
メンバ関数のドキュメント
[explicit] QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)
指定されたparent アイテムを使用してQGraphicsItemを構築します。QObject::parent()によって返される親オブジェクトは変更されません。
parent がnullptr である場合、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 の状態ですべてのアイテムが呼び出されます。シーン制御による単純なアニメーションが必要な場合は、この関数を再実装してアイテムを更新してください。
デフォルトの実装では何も行われません。
この関数はアニメーションを目的としています。別の方法として、QObject およびQGraphicsItem から多重継承し、Animation Framework を使用することもできます。
QGraphicsScene::advance() およびQTimeLineも参照してください 。
[pure virtual] QRectF QGraphicsItem::boundingRect() const
この純粋仮想関数は、アイテムの外側境界を矩形として定義します。描画はすべて、アイテムの境界矩形の内側に限定されなければなりません。QGraphicsView はこれを利用して、アイテムの再描画が必要かどうかを判断します。
アイテムの形状は任意のものにできますが、境界矩形は常に長方形であり、アイテムの変形の影響を受けません。
アイテムのバウンディング矩形を変更したい場合は、まず `prepareGeometryChange()` を呼び出す必要があります。 これにより、シーンに差し迫った変更が通知され、アイテムのジオメトリインデックスを更新できるようになります。そうしないと、シーンはアイテムの新しいジオメトリを認識できず、結果は未定義となります(通常、ビュー内にレンダリングのアーティファクトが残ります)。
この関数を再実装して、QGraphicsView がウィジェットのどの部分(ある場合)を再描画する必要があるかを判断できるようにします。
注:アウトラインやストロークを描画する形状の場合、バウンディング矩形にペン幅の半分を含めることが重要です。ただし、アンチエイリアシングに対する補正を行う必要はありません。
例:
QRectF CircleItem::boundingRect() const
{
qreal penWidth = 1;
return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
diameter + penWidth, diameter + penWidth);
}関連項目: boundingRegion(),shape(),contains(),グラフィックスビューの座標系, およびprepareGeometryChange().
QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const
この項目の境界領域を返します。返される領域の座標系は、itemToDeviceTransform の設定に依存します。パラメータとして単位座標系(QTransform )を指定した場合、この関数はローカル座標系の領域を返します。
境界領域は、項目の視覚的なコンテンツの大まかな輪郭を表します。計算にはコストがかかりますが、boundingRect() よりも精度が高く、項目の更新時に不要な再描画を回避するのに役立ちます。これは、細い項目(線や単純な多角形など)の場合に特に効率的です。setBoundingRegionGranularity() を呼び出すことで、境界領域の粒度を調整できます。デフォルトの粒度は 0 であり、この場合、項目の境界領域はそのバウンディング・レクトと同じになります。
itemToDeviceTransform は、アイテム座標からデバイス座標への変換です。この関数に、シーン座標でのQRegion を返させたい場合は、sceneTransform()を引数として渡すことができます。
boundingRegionGranularity()も参照してください 。
qreal QGraphicsItem::boundingRegionGranularity() const
アイテムのバウンディング領域の粒度を返します。値は 0 から 1 までの範囲(0 を含む)です。デフォルト値は 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 を返します。
mode はother に適用され、その結果得られる形状またはバウンディング矩形が、このアイテムの形状と比較されます。mode のデフォルト値はQt::IntersectsItemShape です。other は、このアイテムの形状と交差する場合、このアイテムの形状を包含する場合、またはこのアイテムの形状に包含される場合に、このアイテムと衝突します(詳細については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 の最も近い共通の祖先アイテムを返します。other のいずれかがnullptr である場合、または共通の祖先が存在しない場合は、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::cursor, およびQGuiApplication::overrideCursor().
QVariant QGraphicsItem::data(int key) const
このアイテムの「key 」というキーに対応するカスタムデータを、QVariant として返します。
カスタムアイテムデータは、任意のアイテムに任意のプロパティを格納するのに役立ちます。例:
static const int ObjectName = 0;
QGraphicsItem *item = scene.itemAt(100, 50, transform);
if (item->data(ObjectName).toString().isEmpty()) {
if (qgraphicsitem_cast<CustomItem *>(item))
item->setData(ObjectName, "Custom");
}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()、『グラフィックスビューの座標系』、およびitemTransform()。
[virtual protected] void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
このイベントハンドラ(event イベント用)を再実装することで、このアイテムに対するドラッグ開始イベントを受け取ることができます。ドラッグ開始イベントは、カーソルがアイテムの領域に入ったときに発生します。
このイベントを受け入れる(つまり、QEvent::accept() を呼び出す)ことで、そのアイテムは、drag move イベントや drag leave イベントに加え、drop イベントも受け付けるようになります。そうでない場合、イベントは無視され、下位のアイテムに伝播されます。イベントが受け入れられた場合、制御がイベントループに戻る前に、そのアイテムは drag move イベントを受け取ります。
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 に対応するこのイベントハンドラは、このアイテムに対するドラッグ移動イベントを受け取るように再実装することができます。ドラッグ移動イベントは、カーソルがアイテムの領域内で移動する際に生成されます。ほとんどの場合、この関数を再実装する必要はありません。この関数は、アイテムの一部のみがドロップを受け付けられることを示すために使用されます。
event に対してQEvent::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の矩形(デフォルト)である場合、QGraphicsItem はデフォルトでアイテムのバウンディング矩形になります。xmargin およびymargin は、ビューが余白として使用するピクセル数です。
指定された矩形に到達できない場合、コンテンツは最も近い有効な位置までスクロールされます。
このアイテムが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 に対応するこのイベントハンドラは、このアイテムのホバーおよびホバー解除イベントを受け取るように再実装することができます。デフォルトの実装では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 に対応するこのイベントハンドラは、このアイテムのホバー移動イベントを受け取るように再実装することができます。デフォルトの実装では何も行われません。
event に対してQEvent::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 にこのアイテムのイベントフィルターをインストールし、このアイテムに関するすべてのイベントが、まずfilterItem のsceneEventFilter() 関数を通過するようにします。
別のアイテムのイベントをフィルタリングするには、このアイテムをそのアイテムのイベントフィルタとして登録します。例:
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` の親の祖先の一つである場合)、true を返します。
parentItem()も参照してください 。
bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
このアイテムがモーダルパネルによってブロックされている場合は `true ` を返し、そうでない場合は `false` を返します。blockingPanel が 0 以外の場合、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 を返します。
基本実装では、item のopaqueArea() をこのアイテムの座標系に変換し、その後、このアイテムの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を返します。parent はnullptr に設定することも可能で、その場合はこの関数は、そのアイテムがシーンから見えるかどうかを返します。
isVisible() が true であっても、そのアイテムが祖先から見えるとは限りません。また、isVisible() が false であっても、そのアイテムが祖先から見える場合もあります。いずれかの祖先が非表示になっている場合、そのアイテム自体も暗黙的に非表示となり、その場合はこの関数は 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に設定されます。それ以外の場合はtrueに設定されます。
このトランスフォームは、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` を、この項目の座標系に変換し、変換後のパスを返します。
item がnullptr である場合、この関数はmapFromScene() と同じ値を返します。
itemTransform()、mapFromParent()、mapFromScene()、mapToItem()、および「グラフィックスビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const
item の座標系にある点point を、この項目の座標系に変換し、変換後の座標を返します。
item がnullptr の場合、この関数はmapFromScene() と同じ値を返します。
関連項目: itemTransform()、mapFromParent()、mapFromScene()、transform()、mapToItem()、および「グラフィックスビューの座標系」。
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
item の座標系にあるポリゴンpolygon を、この項目の座標系に変換し、変換後のポリゴンを返します。
item がnullptr の場合、この関数はmapFromScene() と同じ結果を返します。
itemTransform()、mapToItem()、mapFromParent()、transform()、および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
item の座標系にある矩形rect を、この項目の座標系に変換し、変換後の矩形をポリゴンとして返します。
item がnullptr である場合、この関数はmapFromScene() と同じ結果を返します。
関連項目: itemTransform()、mapToItem()、mapFromParent()、transform()、および「グラフィックス・ビューの座標系」。
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()」、および「グラフィックスビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapFromParent(const QPointF &point) const
このアイテムの親の座標系にある点point を、このアイテムの座標系にマッピングし、マッピングされた座標を返します。
mapFromItem()、mapFromScene()、transform()、mapToParent()、および「グラフィックス・ビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const
この項目の親の座標系にあるポリゴンpolygon を、この項目の座標系に変換し、変換後のポリゴンを返します。
mapToParent()、mapToItem()、transform()、および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const
このアイテムの親の座標系にある矩形 `rect` を、このアイテムの座標系にマッピングし、マッピングされた矩形をポリゴンとして返します。
mapToParent()、mapFromItem()、transform()、および「グラフィックスビューの座標系」も参照してください 。
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()」、および「グラフィックスビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapFromScene(const QPointF &point) const
このアイテムのシーン座標系にある点 `point` を、このアイテムの座標系に変換し、変換後の座標を返します。
mapFromItem()、mapFromParent()、transform()、mapToScene()、および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const
このアイテムのシーン座標系にあるポリゴンpolygon を、このアイテムの座標系に変換し、変換後のポリゴンを返します。
mapToScene()、mapFromParent()、transform()、および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const
このアイテムのシーン座標系にある矩形 `rect` を、このアイテムの座標系にマッピングし、マッピングされた矩形をポリゴンとして返します。
mapToScene()、mapFromItem()、transform()、および「グラフィックスビューの座標系」も参照してください 。
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 を、この項目の座標系に変換し、変換後の矩形を新しい矩形(つまり、結果として得られるポリゴンの境界矩形)として返します。
item がnullptr である場合、この関数はmapRectFromScene()と同じ結果を返します。
itemTransform()、mapToParent()、mapToScene()、mapFromItem() および「グラフィックス・ビューの座標系」も参照してください 。
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()、および「グラフィックスビューの座標系」も参照してください 。
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() および「グラフィックスビューの座標系」も参照してください 。
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` の座標系にマッピングし、マッピングされた矩形を新しい矩形(つまり、結果となるポリゴンの外接矩形)として返します。
item がnullptr の場合、この関数はmapRectToScene() と同じ値を返します。
itemTransform()、mapToParent()、mapToScene()、mapFromItem()、および「グラフィックスビューの座標系」も参照してください 。
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()、および「グラフィックスビューの座標系」も参照してください 。
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()、および「グラフィックスビューの座標系」も参照してください 。
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` の座標系にマッピングし、マッピングされたパスを返します。
item がnullptr の場合、この関数はmapToScene() と同じ値を返します。
itemTransform()、mapToParent()、mapToScene()、mapFromItem()、および「グラフィックス・ビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const
この項目の座標系にある点 `point` を、`item` の座標系に変換し、変換後の座標を返します。
item がnullptr である場合、この関数はmapToScene() と同じ値を返します。
関連項目: itemTransform()、mapToParent()、mapToScene()、transform()、mapFromItem()、および「グラフィックスビューの座標系」。
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
この項目の座標系にあるポリゴン `polygon` を、`item` の座標系に変換し、変換後のポリゴンを返します。
item がnullptr の場合、この関数はmapToScene() と同じ結果を返します。
itemTransform()、mapToParent()、mapToScene()、mapFromItem()、および「グラフィックス・ビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const
この項目の座標系にある矩形 `rect` を、`item` の座標系に変換し、変換後の矩形をポリゴンとして返します。
item がnullptr である場合、この関数はmapToScene() と同じ結果を返します。
itemTransform()、mapToParent()、mapToScene()、mapFromItem()、および「グラフィックスビューの座標系」も参照してください 。
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()」、および「グラフィックスビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapToParent(const QPointF &point) const
このアイテムの座標系にある点 `point` を、その親の座標系にマッピングし、マッピングされた座標を返します。アイテムに親がない場合、`point ` はシーンの座標系にマッピングされます。
関連項目: mapToItem()、mapToScene()、transform()、mapFromParent()、および「グラフィックスビューの座標系」。
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
この項目の座標系にあるポリゴン `polygon` を、その親の座標系に変換し、変換後のポリゴンを返します。項目に親がない場合、`polygon ` はシーンの座標系に変換されます。
関連項目: mapToScene()、mapToItem()、mapFromParent()、「グラフィックスビューの座標系」を参照してください 。
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
このアイテムの座標系にある矩形 `rect` を、その親の座標系にマッピングし、マッピングされた矩形をポリゴンとして返します。アイテムに親がない場合、`rect ` はシーンの座標系にマッピングされます。
「 mapToScene()」、「mapToItem()」、「mapFromParent()」、および「グラフィックスビューの座標系」も参照してください 。
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()、および「グラフィックスビューの座標系」も参照してください 。
QPointF QGraphicsItem::mapToScene(const QPointF &point) const
この項目の座標系にある点point をシーンの座標系に変換し、変換後の座標を返します。
mapToItem()、mapToParent()、transform()、mapFromScene() および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const
この項目の座標系にあるポリゴンpolygon を、シーンの座標系に変換し、変換後のポリゴンを返します。
mapToParent()、mapToItem()、mapFromScene()、および「グラフィックスビューの座標系」も参照してください 。
QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const
この項目の座標系にある矩形 `rect` をシーンの座標系に変換し、変換後の矩形をポリゴンとして返します。
「 mapToParent()」、「mapToItem()」、「mapFromScene()」、および「グラフィックスビューの座標系」も参照してください 。
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 用)は、このアイテムに対するマウスのダブルクリックイベントを受け取るように再実装することができます。
項目をダブルクリックすると、その項目はまずマウス押下イベントを受け取り、次に離しイベント(つまりクリック)、続いてダブルクリックイベント、そして最後に離しイベントを受け取ります。
event でQEvent::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() を参照)。この関数を再実装しない場合、押下イベントはこのアイテムの下にある最上位のアイテムに伝播され、このアイテムには他のマウスイベントは配信されません。
この関数を再実装した場合、デフォルトではevent が受け入れられ(QEvent::accept()を参照)、このアイテムがマウスのグラバーとなります。これにより、このアイテムは今後の移動、リリース、ダブルクリックイベントを受け取ることができます。event に対してQEvent::ignore()を呼び出すと、このアイテムはマウスのグラバーとしての役割を失い、event が下にある最上位のアイテムに伝播します。 新しいマウス押下イベントを受信しない限り、このアイテムにはそれ以上のマウスイベントは配信されません。
デフォルトの実装では、選択や移動などの基本的なアイテム操作が処理されます。この関数を再実装する際に基本の実装を維持したい場合は、再実装内で QGraphicsItem::mousePressEvent() を呼び出してください。
このイベントは、movable でもselectable でもないアイテムに対して、QEvent::ignore() として処理されます。
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()、ItemIgnoresParentOpacity 、およびItemDoesntPropagateOpacityToChildrenも参照してください 。
[virtual] QPainterPath QGraphicsItem::opaqueArea() const
この仮想関数は、このアイテムが不透明である領域を表すシェイプを返します。領域は、不透明なブラシまたは色(つまり、透明ではないもの)で塗りつぶされている場合、不透明となります。
この関数は、isObscuredBy() によって使用されます。この関数は、基になるアイテムから呼び出され、それらがこのアイテムによって隠されているかどうかを判断するために使用されます。
デフォルトの実装は、空の `QPainterPath` を返します。これは、このアイテムが完全に透明であり、他のアイテムを遮っていないことを示します。
isObscuredBy()、isObscured()、およびshape()も参照してください 。
[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
この関数は、通常QGraphicsView によって呼び出され、アイテムの内容をローカル座標系で描画します。
QGraphicsItem のサブクラスでこの関数を再実装し、painter を使用してアイテムの描画実装を提供します。option パラメータは、アイテムの状態、表示領域、詳細度(LOD)のヒントなど、アイテムのスタイルオプションを提供します。widget 引数はオプションです。 指定された場合、これは描画対象のウィジェットを指します。指定されない場合は 0 となります。キャッシュされた描画の場合、widget は常に 0 です。
void RoundRectItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
}ペインタのペンの幅はデフォルトで 0 であり、そのペンはペイントデバイスのパレットにあるQPalette::Text ブラシで初期化されます。ブラシはQPalette::Window で初期化されます。
レンダリング上の不具合を避けるため、すべての描画をboundingRect()の境界内に収めるようにしてください(QGraphicsView はペインターのクリッピングを自動的に行わないため)。 特に、QPainter が割り当てられたQPen を使用して図形のアウトラインを描画する場合、アウトラインの半分は描画対象の図形の外側に、残りの半分は内側に描画されます(例えば、ペン幅が2ユニットの場合、アウトラインはboundingRect()の内側1ユニットの位置に描画する必要があります)。QGraphicsItem は、幅が0以外の装飾用ペンの使用をサポートしていません。
すべての描画はローカル座標系で行われます。
注: update() が呼び出されない限り、アイテムは常にまったく同じ方法で再描画されることが必須です 。そうしないと、視覚的なアーティファクトが発生する可能性があります。つまり、update() がその間に呼び出されない限り、paint() を 2 回続けて呼び出した場合、常に同じ出力が生成されなければなりません。
注: アイテムのキャッシュを有効にしても 、update() を明示的に呼び出さなくても、Graphics View フレームワークによって paint() が 1 回だけ呼び出されるとは限りません。詳細については、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()、および「グラフィックスビューの座標系」も参照してください 。
[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() および「グラフィックスビューの座標系」も参照してください 。
[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()、および「グラフィックスビューの座標系」も参照してください 。
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()、「グラフィックスビューの座標系」、およびTransformations 。
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
dx (dy )によってrect の内容をスクロールします。rect がnull rect(デフォルト)の場合、その項目のバウンディング矩形がスクロールされます。
スクロールは、アイテムの内容(またはその一部)が垂直方向または水平方向にシフトした場合に、単に再描画する代わりに利用できる高速な代替手段です。 現在の変換や描画デバイス(つまりビューポート)の機能によっては、この操作は memmove() を使用してピクセルをある場所から別の場所に移動させるだけのものになる場合があります。ほとんどの場合、これは領域全体を再描画するよりも高速です。
スクロール後、アイテムは新たに表示された領域に対して更新を発行します。スクロールがサポートされていない場合(例:スクロール最適化の恩恵を受けられない OpenGL ビューポートへのレンダリングなど)、この関数の呼び出しは update(rect) を呼び出すことと同じになります。
rect注:スクロールは、QGraphicsItem::ItemCoordinateCache が有効な場合にのみサポートされます。それ以外の場合は、この関数の呼び出しはupdate( )の呼び出しと同等です。アイテムが不透明であり、他のアイテムと重なっていないことが確実である場合は、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 と同等です)。
親アイテムは、子アイテムよりも先にホバー・エンターイベントを受け取り、子アイテムよりも後にホバー・リーブイベントを受け取ります。ただし、カーソルが子アイテムに入った場合、親アイテムはホバー・リーブイベントを受け取りません。カーソルが親アイテムの領域(子アイテムの領域を含む)から出るまで、親アイテムは「ホバー状態」のままとなります。
親アイテムが子アイテムのイベントを処理する場合、カーソルが子アイテムを通過する際にホバー移動、ドラッグ移動、およびドロップイベントを受信しますが、子アイテムに代わってホバー進入およびホバー離脱イベント、あるいはドラッグ進入およびドラッグ離脱イベントを受信することはありません。
ウィンドウ装飾を持つQGraphicsWidget は、acceptHoverEvents()の値にかかわらず、hoverイベントを受け付けます。
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 がtrueで、かつシーンがアクティブな場合、このアイテムのパネルが有効になります。それ以外の場合は、パネルは無効になります。
アイテムがアクティブなシーンに含まれていない場合、active は、シーンがアクティブになったとき、またはアイテムがシーンに追加されたときにパネルがどのように動作するかを決定します。true の場合、アイテムがシーンに追加されたとき、またはシーンがアクティブになったときに、アイテムのパネルが有効になります。そうでない場合、シーンのアクティブ状態にかかわらず、アイテムは非アクティブのままになります。
isPanel()、QGraphicsScene::setActivePanel()、およびQGraphicsScene::isActive()も参照してください 。
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
バウンディング領域の粒度を `granularity` に設定します。値は 0 から 1 までの範囲(0 および 1 を含む)です。デフォルト値は 0 です(つまり、最も低い粒度であり、バウンディング領域は項目のバウンディング矩形に対応します)。
この粒度は、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 は、アイテム自体の論理サイズにかかわらず、グラフィックメモリ内の100×100ピクセルにアイテムを収めます。デフォルトでは、QGraphicsItem はboundingRect()のサイズを使用します。ItemCoordinateCache 以外のすべてのキャッシュモードでは、logicalCacheSize は無視されます。
アイテムの再描画にかなりの時間がかかる場合、キャッシュを使用することでレンダリングを高速化できます。ただし、場合によってはキャッシュによってレンダリングが遅くなることもあります。特に、アイテムの再描画にかかる時間が、QGraphicsItem がキャッシュからの再描画に要する時間よりも短い場合が該当します。
キャッシュが有効になっている場合、アイテムの `paint()` 関数は通常、オフスクリーンのピクマップキャッシュに描画を行います。その後の再描画要求については、Graphics View フレームワークがキャッシュから再描画を行います。このアプローチは、すべてのキャッシュを OpenGL テクスチャとして保存する `QGLWidget` で特に効果的です。
最適なパフォーマンスを得るためには、QPixmapCache のキャッシュ制限を変更する必要がある場合があることに注意してください。
さまざまなキャッシュモードの詳細については、CacheMode のドキュメントを参照してください。
注: キャッシュを有効にしても 、明示的な `update()` の呼び出しに対してのみ、アイテムの `paint()` 関数が呼び出されるとは限りません。 たとえば、メモリ負荷が高い場合、Qt はキャッシュ情報の一部を破棄することを決定する場合があります。そのような場合、update() の呼び出しがなかったとしても、アイテムのpaint() 関数が呼び出されます (つまり、キャッシュが有効になっていない場合とまったく同じになります)。
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::cursor, およびQGuiApplication::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 に含まれないすべてのフラグが無効になります。
アイテムにフォーカスが当たっており、flags がItemIsFocusable を有効にしない場合、この関数の呼び出しにより、そのアイテムのフォーカスは失われます。同様に、アイテムが選択されており、flags がItemIsSelectable を有効にしない場合、そのアイテムは自動的に選択解除されます。
デフォルトでは、どのフラグも有効になっていません。(QGraphicsWidget は、位置の変化を追跡するために、デフォルトでItemSendsGeometryChanges フラグを有効にします。)
flags() およびsetFlag()も参照してください 。
void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
この項目にキーボードのフォーカスを設定します。focusReason 引数は、この関数によって生成されるすべてのfocus event に渡されます。これは、その項目がフォーカスを獲得した原因を説明するために使用されます。
ItemIsFocusable フラグが設定されている有効なアイテムのみが、キーボードフォーカスを受け取ることができます。
このアイテムが表示されていない、アクティブでない、またはシーンに関連付けられていない場合、直ちに入力フォーカスを獲得することはありません。ただし、後で表示されるようになった場合には、そのアイテムのサブツリーにおける優先フォーカスアイテムとして登録されます。
この関数を呼び出す結果、このアイテムは `focus in event ` を受け取り、その値は `focusReason` となります。すでに別のアイテムがフォーカスを持っている場合、そのアイテムはまず、入力フォーカスを失ったことを示す `focus out event ` を受け取ります。
clearFocus()、hasFocus()、focusItem()、およびfocusProxy()も参照してください 。
void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
アイテムのフォーカスプロキシを `item` に設定します。
アイテムにフォーカスプロキシが設定されている場合、そのアイテムが入力フォーカスを獲得すると、フォーカスプロキシが入力フォーカスを受け取ります。アイテム自体も引き続きフォーカスを保持しますが(つまり、hasFocus() は true を返します)、キーボード入力を受け取るのはフォーカスプロキシのみとなります。
フォーカスプロキシ自体もフォーカスプロキシを持つことができ、その連鎖はさらに続く可能性があります。そのような場合、キーボード入力は最外層のフォーカスプロキシによって処理されます。
フォーカスプロキシ `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` に追加します。group が `nullptr` の場合、このアイテムは現在のグループから削除され、前のグループの親の子供として追加されます。
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` の場合、レンダリング時に有効なプロパティがアイテムのキャッシュに適用されます。
アイテムの不透明度が親とどのように組み合わされるかに影響を与えるアイテムフラグは、ItemIgnoresParentOpacity とItemDoesntPropagateOpacityToChildren の 2 つがあります。
注: アイテムの不透明度を 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()、および「グラフィックスビューの座標系」も参照してください 。
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 に設定すると、アイテムは一点に縮小されます。負のスケール係数を指定すると、アイテムは反転および鏡像化されます(つまり、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 がtrueの場合、matrix は現在の行列と合成されます。そうでない場合、matrix が現在の行列に置き換えられます。combine はデフォルトでfalseです。
変換されたビューを使用するアイテムとのやり取りを簡略化するため、QGraphicsItem には、アイテムの座標とシーンの座標の間を変換できる mapTo... および mapFrom... 関数が用意されています。たとえば、mapToScene() を呼び出してアイテムの座標をシーンの座標にマッピングしたり、mapFromScene() を呼び出してシーンの座標からアイテムの座標にマッピングしたりできます。
変換行列は、アイテムの `rotation()`、`scale()`、および `transformations()` と組み合わされ、アイテムの座標系をその親の座標系に変換する複合変換となります。
関連項目: transform()、setRotation()、setScale()、setTransformOriginPoint()、「グラフィックスビューの座標系」、および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 がtrueの場合、そのアイテムは表示されます。そうでない場合、そのアイテムは非表示になります。非表示のアイテムは描画されず、イベントも受け取りません。特に、マウスイベントは非表示のアイテムを通り抜け、その背後に存在するアイテムに伝達されます。 また、非表示のアイテムは選択できず、入力フォーカスを取得することもできず、QGraphicsScene のアイテム位置検出関数によっても検出されません。
マウスを掴んでいる最中(つまり、マウスイベントを受信している最中)にアイテムが非表示になった場合、そのアイテムは自動的にマウスの掴み状態を失い、アイテムを再び表示しても掴み状態は回復しません。マウスの掴み状態を回復するには、新たにマウスを押下する必要があります。
同様に、非表示のアイテムはフォーカスを取得できないため、非表示になった時点でフォーカスを取得していた場合、フォーカスを失い、単にアイテムを再び表示してもフォーカスは回復しません。
親アイテムを非表示にすると、そのすべての子アイテムも非表示になります。親アイテムを表示すると、明示的に非表示にされていない限り、すべての子アイテムも表示されます(つまり、子アイテムに対して setVisible(false) を呼び出した場合、親アイテムが非表示になってから再び表示されても、その子アイテムは再表示されません)。
アイテムはデフォルトで表示されています。新しいアイテムに対して setVisible() を呼び出す必要はありません。
注: 不透明度(opacity)が 0 に設定されたアイテムは 、依然として表示されているものとみなされますが、実際には非表示のアイテムと同様に扱われます。つまり、マウスイベントはそのアイテムを透過して通過し、QGraphicsView::items() が返すアイテムには含まれません。ただし、そのアイテムはフォーカスを維持します。
関連項目: isVisible()、show()、hide()、およびsetOpacity()。
void QGraphicsItem::setX(qreal x)
アイテムの位置のx 座標を設定します。setPos(x,y())を呼び出すのと同じです。
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()、Sorting 、stackBefore()、および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()、ItemStacksBehindParent 、およびSorting 。
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 列挙型値を宣言してください。カスタムアイテムは、UserType (65536) 以上の値を返さなければなりません。
例:
class Item : 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() を呼び出すのと同じです。
qreal QGraphicsItem::y() const
この便利関数は、pos().y() を呼び出すのと同じです。
qreal QGraphicsItem::zValue() const
アイテムのZ値を返します。Z値は、同階層(隣接する)アイテムの重ね順に影響します。
デフォルトのZ値は0です。
関連項目: setZValue()、Sorting 、stackBefore()、およびItemStacksBehindParent 。
関連する非メンバー
template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)
item が型Tの場合、指定されたitem を型Tにキャストした値を返します。そうでない場合は、nullptr が返されます。
注: この関数がカスタムアイテムで正しく動作するようにするには 、各カスタムQGraphicsItem サブクラスに対してtype()関数を再実装してください。
関連項目: QGraphicsItem::type() およびQGraphicsItem::UserType 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.