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 | anonymous { Type, UserType } |
パブリック関数
QGraphicsItem(QGraphicsItem*parent= nullptr) | |
仮想 | ~QGraphicsItem() |
ブール | acceptDrops() const |
ブール | acceptHoverEvents() const |
ブール | acceptTouchEvents() const |
Qt::MouseButtons | acceptedMouseButtons() const |
仮想空白 | advance(intフェーズ) |
仮想 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 |
仮想ブール | collidesWithItem(const QGraphicsItem*other, Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
仮想ブール | collidesWithPath(const QPainterPath&path, Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
QList<QGraphicsItem *> (Qt::Item Selection *>) const | collidingItems(Qt::ItemSelectionModemode= Qt::IntersectsItemShape) const |
QGraphicsItem *. | commonAncestorItem(const QGraphicsItem*other) const |
仮想ブール | 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) |
ブール | filtersChildEvents() const |
QGraphicsItem::GraphicsItemFlags | flags() const |
QGraphicsItem *. | focusItem() const |
QGraphicsItem * () | focusProxy() const |
void | grabKeyboard() |
void | grabMouse() |
QGraphicsEffect *. | graphicsEffect() const |
QGraphicsItemGroup *. | group() const |
ブール | hasCursor() const |
ブール | hasFocus() const |
void | hide() |
Qt::InputMethodHints | inputMethodHints() const |
void | installSceneEventFilter(QGraphicsItem*filterItem) |
ブール | isActive() const |
ブール | isAncestorOf(const QGraphicsItem*child) const |
ブール | isBlockedByModalPanel(QGraphicsItem**blockingPanel= nullptr) const |
ブール | isClipped() const |
ブール | isEnabled() const |
ブール | isObscured(const QRectF&rect= QRectF()) const |
ブール | isObscured(qrealx, qrealy, qrealw, qrealh) const |
仮想ブール | isObscuredBy(const QGraphicsItem*item) const |
ブール | isPanel() const |
ブール | isSelected() const |
ブール | isUnderMouse() const |
ブール | isVisible() const |
ブール | isVisibleTo(const QGraphicsItem*parent) const |
ブール | isWidget() const |
ブール | 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 |
仮想 QPainterPath | opaqueArea() const |
仮想空白 | paint(QPainter*painter, const QStyleOptionGraphicsItem*option, QWidget*widget= nullptr) = 0 |
QGraphicsItem *オプション | panel() const |
QGraphicsItem::PanelModality | panelModality() const |
QGraphicsItem * () | parentItem() const |
QGraphicsObject *. | parentObject() const |
QGraphicsWidget * () | parentWidget() const |
QPointF | pos() const |
void | removeSceneEventFilter(QGraphicsItem*filterItem) |
void | resetTransform() |
qreal | rotation() const |
qreal | scale() const |
QGraphicsScene *. | scene() const |
QRectF | sceneBoundingRect() const |
QPointF | scenePos() const |
QTransform | sceneTransform() const |
void | scroll(qrealdx, qrealdy, const QRectF&rect= QRectF()) |
void | setAcceptDrops(boolon) |
void | setAcceptHoverEvents(boolenabled) |
無効 | setAcceptTouchEvents(ブール有効) |
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) |
無効 | setFiltersChildEvents(ブール有効) |
無効 | 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(qrealfactor) |
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 pixmap アイテム
- 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 にトランスフォームのプロパティを設定する順序は、結果のトランスフォームには影響しません:
- アイテムの基本トランスフォームが適用されます (transform())
- アイテムの変換リストは、順番に適用されます (transformations())
- アイテムは、そのトランスフォームの原点に対して相対的に回転されます (rotation(),transformOriginPoint())
- アイテムは、そのトランスフォームの原点に対して相対的に拡大縮小されます (scale(),transformOriginPoint())
ペイント
paint() 関数は、QGraphicsView によって呼び出され、項目の内容を描画します。アイテムは、それ自身の背景やデフォルトの塗りつぶしを持っていません。アイテムの背後にあるものは何でも、この関数で明示的にペイントされていないすべての領域を照らします。update() を呼び出すと、再描画をスケジュールすることができます。オプションで、再描画が必要な矩形を渡すこともできます。QGraphicsItem にはQWidget::repaint() に相当するものはありません。
アイテムはビューによって描画され、親アイテムから始まり、昇順に子アイテムが描画されます。アイテムの積み重ね順序は、setZValue() を呼び出すことで設定でき、zValue() を呼び出すことでテストできます。重ね順は兄弟アイテムにも適用され、親アイテムは常に子アイテムの前に描かれます。
並べ替え
すべてのアイテムは定義された安定した順序で描画され、この同じ順序によって、シーンをクリックしたときにどのアイテムが最初にマウス入力を受けるかが決まります。アイテムはシーンの論理構造に従って「自然な順序」に従うので、通常はソートについて心配する必要はありません。
アイテムの子は親の上にスタックされ、兄弟アイテムは挿入順(つまり、シーンに追加された順、または同じ親に追加された順)にスタックされます。アイテム A を追加し、次に B を追加した場合、B は A の上になります。
この例では、Drag and Drop Robotの例から、ロボットのすべての手足の積み重ね順を示しています。胴体はルートアイテム(他のすべてのアイテムは胴体の子または子孫)なので、最初に描かれます。次に頭部が描かれます。頭部は胴体の子アイテムのリストの最初のアイテムだからです。次に左上の腕が描かれる。下腕は上腕の子なので、下腕が描かれ、続いて上腕の次の兄弟である右腕が描かれます。
上級者向けには、アイテムの並べ方を変更する方法がある:
- アイテムに対してsetZValue() を呼び出すと、他の兄弟アイテムの上や下に明示的にスタックさせることができます。アイテムのデフォルトの Z 値は 0 です。同じ Z 値を持つアイテムは、挿入順でスタックされます。
- stackBefore() を呼び出すと、子アイテムのリストを並べ替えることができます。これは挿入順序を直接変更します。
- ItemStacksBehindParent フラグを設定すると、子アイテムを親の後ろに積み重ねることができます。
兄弟アイテムの重ね順は、各アイテムの子アイテムや子孫アイテムでもカウントされます。つまり、あるアイテムが他のアイテムの上にある場合、そのすべての子アイテムは、他のアイテムのすべての子アイテムの上にもあります。
イベント
QGraphicsItem は、仮想関数sceneEvent() を通して、QGraphicsScene からのイベントを受け取ります。この関数は、最も一般的なイベントを一連の便利なイベント・ハンドラに分配します:
- 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 自体の関数を呼び出すと、特定の関数呼び出しによって不要な再帰が発生する可能性があるため、注意が必要である。例えば、setPos ()関数が再びitemChange (ItemPositionChange)を呼び出してしまうため、ItemPositionChange通知のitemChange ()内でsetPos ()を呼び出すことはできません。その代わりに、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 フラグが有効で、アイテムの回転プロパティが変更された後に送信されます。value引数は、新しい回転(すなわち、double)であり、QGraphicsItem は、この通知の戻り値を無視する(すなわち、読み取り専用通知)。この通知は配信されるので、itemChange() の中でsetRotation() を呼び出さないでください。 |
QGraphicsItem::ItemScaleChange | 30 | アイテムの scale プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの scale プロパティが変更された場合(つまり、setScale() を呼び出した結果)に送信されます。value 引数は新しいスケール(つまり double)です。古いスケールを取得するには、scale ()を呼び出します。この通知は配信されるため、itemChange() 内でsetScale() を呼び出さないでください。代わりに、itemChange() から新しいスケールを返すことができます。 |
QGraphicsItem::ItemScaleHasChanged | 31 | アイテムの scale プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの scale プロパティが変更された後に送信されます。value 引数は新しいスケール(つまり、double)です。QGraphicsItem は、この通知の戻り値を無視します(つまり、読み取り専用通知)。この通知は配信されるので、itemChange() の中でsetScale() を呼び出さないでください。 |
QGraphicsItem::ItemTransformOriginPointChange | 32 | アイテムのトランスフォーム原点プロパティが変更される。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムのトランスフォーム原点プロパティが変更された場合(つまり、setTransformOriginPoint ()を呼び出した結果)に送られる。value 引数は新しい原点(つまり、QPointF )です。古い原点を取得するには、transformOriginPoint ()を呼び出します。この通知は配信されるため、itemChange() 内でsetTransformOriginPoint() を呼び出さないでください。代わりに、itemChange() から新しい変換原点を返すことができます。 |
QGraphicsItem::ItemTransformOriginPointHasChanged | 33 | アイテムの変換原点プロパティが変更されました。この通知は、ItemSendsGeometryChanges フラグが有効で、アイテムの変換原点プロパティが変更された後に送信されます。value 引数は、新しい原点(すなわち、QPointF )であり、QGraphicsItem は、この通知の戻り値を無視する(すなわち、読み取り専用通知)。この通知が配信されるので、itemChange ()の中でsetTransformOriginPoint ()をコールしないでください。 |
QGraphicsItem::ItemSelectedChange | 4 | アイテムの選択状態が変化する。アイテムが現在選択されている場合、それは非選択状態になり、その逆も同様です。value 引数は、新しい選択状態(すなわち、true または false)です。この通知はitemChange() 内で行われるため、setSelected() を呼び出さないでください。代わりに、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 引数は新しいフラグ(つまり quint32)です。この通知が配信されるので、itemChange ()の中でsetFlags ()を呼び出さないでください。代わりに、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 | exposedRect QStyleOptionGraphicsItemデフォルトでは、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も参照してください 。
enum QGraphicsItem::anonymous
Qt の標準グラフィックス・アイテム・クラスで、仮想type() 関数が返す値。例えば、QGraphicsPathItem::type() が返す値は 2 です。
定数 | 値 | 説明 |
---|---|---|
QGraphicsItem::Type | 1 | class QGraphicsPathItem : public QAbstractGraphicsShapeItem { public: enum { Type = 2 }; int type() const override { return Type; } ... }; |
QGraphicsItem::UserType | 65536 | QGraphicsItem のカスタム・サブクラスの仮想type() 関数によって返される最低値。class CustomItem : public QGraphicsItem { public: enum { Type = UserType + 1 }; int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; } ... }; |
メンバ関数ドキュメント
[explicit]
QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)
与えられたparent アイテムで QGraphicsItem を構築します。これは、QObject::parent() によって返された親オブジェクトを変更しません。
parent がnullptr
の場合、QGraphicsScene::addItem() を呼び出すことで、アイテムをシーンに追加できます。このアイテムは、トップレベルのアイテムになります。
QGraphicsScene::addItem() およびsetParentItem()も参照してください 。
[virtual noexcept]
QGraphicsItem::~QGraphicsItem()
QGraphicsItem とその子アイテムをすべて破壊する。このアイテムが現在シーンに関連付けられている場合、アイテムは削除される前にシーンから削除されます。
注意: アイテムを破棄する前に、QGraphicsScene からアイテムを削除した方が効率的です。
bool QGraphicsItem::acceptDrops() const
このアイテムがドラッグ&ドロップイベントを受け付ける場合はtrue
を返し、そうでない場合はfalse
を返します。デフォルトでは、アイテムはドラッグ&ドロップイベントを受け付けません。
setAcceptDrops()も参照してください 。
bool QGraphicsItem::acceptHoverEvents() const
アイテムがホバーイベントを受け付ける場合はtrue
を返します (QGraphicsSceneHoverEvent)。そうでない場合は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 を多重継承し、アニメーションフレームワークを使用することです。
QGraphicsScene::advance() およびQTimeLineも参照して ください。
[pure virtual]
QRectF QGraphicsItem::boundingRect() const
この純粋な仮想関数は、アイテムの外側の境界を矩形として定義します。すべてのペイントは、アイテムの境界矩形の内側に制限されなければなりません。QGraphicsView は、これを使用してアイテムの再描画が必要かどうかを判断します。
アイテムの形状は任意であるが、外接矩形は常に矩形であり、アイテムの変形の影響を受けない。
アイテムの外接矩形を変更したい場合は、まずprepareGeometryChange() を呼び出す必要があります。そうしないと、シーンはアイテムの新しいジオメトリに気付かず、結果は未定義になります(通常、レンダリングアーチファクトがビュー内に残ります)。
この関数を再実装して、ウィジェットのどの部分を再描画する必要があるかをQGraphicsView に判断させます。
注意: アウトライン / ストロークを描くシェイプの場合、バウンディング rect にペン幅の半分を含めることが重要です。ただし、アンチエイリアスを補正する必要はありません。
例
QRectF CircleItem::boundingRect() const { qreal penWidth = 1; return QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth); }
boundingRegion(),shape(),contains(),The Graphics View Coordinate System,prepareGeometryChange()も参照 。
QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const
この項目の外接領域を返 し ます。返される領域の座標空間はitemToDeviceTransform に依存する。パラメータとして identityQTransform を渡すと、この関数はローカル座標領域を返します。
外接領域は、 アイ テムの視覚的内容の粗い輪郭を表 し ます。計算にはコストがかかりますが、boundingRect() よりも正確で、アイテムが更新されたときに不要な再描画を避けるのに役立ちます。これは特に細いアイテム(線や単純な多角形など)に対して効率的です。setBoundingRegionGranularity() を呼び出すことで、境界領域の粒度を調整することができます。デフ ォル ト の粒度は 0 です。 こ の場合、 ア イ テムの外接領域はその外接矩形 と 同 じ にな り ます。
itemToDeviceTransform はアイテム座標からデバイス座標への変換です。この関数がシーン座標で を返すようにしたい場合は、引数として () を渡すことができます。QRegion sceneTransform
boundingRegionGranularity()も参照してください 。
qreal QGraphicsItem::boundingRegionGranularity() const
デフォルト値は 0 (すなわち、境界領域がアイテムの境界矩形に対応する最小の粒度)です。
setBoundingRegionGranularity()も参照してください 。
QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const
このアイテムのキャッシュモードを返します。デフォルトのモードはNoCache です (つまり、キャッシュは無効で、すべてのペイントは即時実行されます)。
setCacheMode()も参照してください 。
QList<QGraphicsItem *> QGraphicsItem::childItems() const
このアイテムの子アイテムのリストを返します。
アイテムは積み重ね順でソートされる。これは、アイテムの挿入順と Z 値の両方を考慮したものである。
setParentItem()、zValue()、Sortingも参照のこと 。
QRectF QGraphicsItem::childrenBoundingRect() const
このアイテムの子孫(つまり、その子やその子など)の外接矩形をローカル座標で返します。こ の矩形は、 ローカル座標にマ ッ プ さ れた後のすべての子孫を含みます。アイテムに子がない場合、この関数は空のQRectF を返します。
こ れは、 こ のア イ テ ム自身の外接矩形を含まず、 その子孫の累積外接矩形のみを返し ます。このアイテムの外接矩形を含める必要がある場合は、QRectF::operator|() を使用して childrenBoundingRect() にboundingRect() を追加できます。
この関数は、すべての子孫を繰り返し処理することで、返される外接矩形のサイズを決定します。
boundingRect() およびsceneBoundingRect()も参照して ください。
void QGraphicsItem::clearFocus()
アイテムからキーボード入力フォーカスを取る。
フォーカスがある場合、focus out event がこのアイテムに送られ、フォーカスが失われようとしていることを伝えます。
ItemIsFocusable フラグを設定したアイテム、または適切なフォーカスポリシーを設定したウィジェットだけが、キーボードフォーカスを受け付けることができます。
setFocus()、hasFocus()、QGraphicsWidget::focusPolicyも参照してください 。
QPainterPath QGraphicsItem::clipPath() const
このアイテムのクリップパス、またはこのアイテムがクリップされていない場合は空のQPainterPath を返します。クリップパスは、アイテムの外観とインタラクションを制限します(つまり、アイテムが描画できる領域とイベントを受け取る領域を制限します)。
ItemClipsToShape またはItemClipsChildrenToShape フラグを設定することで、クリッピングを有効にすることができます。アイテムのクリップパスは、すべてのクリッピング先祖のシェイプを交差させて計算されます。アイテムがItemClipsToShape を設定している場合、最終的なクリップはアイテム自身のシェイプと交差します。
注意: クリッピングは、関係するすべてのアイテムにパフォーマンス上のペナルティをもたらします。できる限りクリッピングの使用は避けるべきです (たとえば、アイテムが常にboundingRect() やshape() の境界の内側に描画される場合、クリッピングは必要ありません)。
isClipped()、shape()、setFlags()も参照してください 。
[virtual]
bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
このアイテムがother と衝突する場合はtrue
を返し、衝突しない場合はfalse
を返す。
mode がother に適用され、その結果の形状または外接矩形がこのアイテムの形状と比較される。mode のデフォルト値はQt::IntersectsItemShape である。other は、このアイテムの shape と交差するか、このアイテムの shape を含むか、またはこのアイテムの shape に含まれる場合に、このアイテムと衝突する (詳細はQt::ItemSelectionMode を参照)。
デフォルトの実装はシェイプの交差に基づいており、両方のアイテムでshape() を呼び出す。任意のシェイプとシェイプの交差の複雑さは、シェイプが複雑になると桁違いに大きくなるため、この操作には著しく時間がかかります。この関数をQGraphicsItem のサブクラスで再実装し、カスタムアルゴリズムを提供するオプションがあります。これにより、衝突検出のパフォーマンスを向上させるために、独自のアイテムの形状の自然な制約を利用することができます。たとえば、2つの変形されていない完全な円形のアイテムの衝突は、それらの位置と半径を比較することによって、非常に効率的に決定することができます。
この関数を再実装し、other 上でshape() やboundingRect() を呼び出す場合、返される座標は、交差が起こる前にこのアイテムの座標系にマップされていなければならないことに注意してください。
[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); if (item->data(ObjectName).toString().isEmpty()) { if (qgraphicsitem_cast<ButtonItem *>(item)) item->setData(ObjectName, "Button"); }
Qt はこの機能をデータの保存には使用しません。
setData()も参照してください 。
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
シーンからデバイス座標へのマッピングにviewportTransform を使用して、このアイテムのデバイス変換行列を返します。この行列は、このアイテムのローカル座標系からビューポートの(または任意のデバイスの)座標系に座標や幾何学的形状をマッピングするために使用できます。ビューポートから座標をマップするには、最初に返された行列を反転する必要があります。
例
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // returns the item's (0, 0) point in view's viewport coordinates rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // returns view's viewport's (100, 100) coordinate in item coordinates
この関数は、このアイテムのシーントランスフォームをビューのビューポートトランスフォームと組み合わせるのと同じですが、ItemIgnoresTransformations フラグも理解します。デバイスのトランスフォームは、トランスフォームできないアイテムの正確な座標マッピング(および衝突検出)を行うために使用できます。
transform(),setTransform(),scenePos(),The Graphics View Coordinate System,itemTransform()も参照してください 。
[virtual protected]
void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
このイベントハンドラ(イベントevent )は、このアイテムのドラッグ入力イベントを受け取るために再実装することができます。ドラッグ入力イベントは、カーソルがアイテムの領域に入ると発生します。
このイベントを受け入れる(つまり、QEvent::accept() を呼び出す)ことで、アイテムは、ドラッグ移動とドラッグ離脱を受け取ることに加えて、ドロップイベントも受け入れることになります。そうでない場合、イベントは無視され、下のアイテムに伝搬します。イベントが受け入れられた場合、制御がイベントループに戻る前に、アイテムはドラッグ移動イベントを受け取ります。
dragEnterEventの一般的な実装では、event の関連するmimeデータに応じて、event を受け入れるか無視します。例
CustomItem::CustomItem() { setAcceptDrops(true); ... } void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { event->setAccepted(event->mimeData()->hasFormat("text/plain")); }
この機能を有効にするには、setAcceptDrops(true)
を呼び出します。
デフォルトの実装では何もしません。
dropEvent()、dragMoveEvent()、dragLeaveEvent()も参照してください 。
[virtual protected]
void QGraphicsItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
このイベントハンドラ(イベントevent )は、このアイテムのドラッグ放置イベントを受け取るために再実装することができます。ドラッグ離脱イベントは、カーソルがアイテムの領域から離れると発生します。ほとんどの場合、この関数を再実装する必要はありませんが、アイテムの状態(ハイライトなど)をリセットするのに便利です。
event に対してQEvent::ignore() やQEvent::accept() を呼び出しても効果はありません。
この機能を有効にするには、setAcceptDrops(true)
を呼び出します。
デフォルトの実装では何もしません。
dragEnterEvent()、dropEvent()、dragMoveEvent()も参照してください 。
[virtual protected]
void QGraphicsItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
このイベントハンドラ(イベントevent 用)は、このアイテムのドラッグ移動イベントを受け取るために再実装することができる。ドラッグ移動イベントは、カーソルがアイテムの領域内を移動するときに発生します。ほとんどの場合、この関数を再実装する必要はありません。この関数は、アイテムの一部だけがドロップを受け付けることを示すために使用します。
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 rect(デフォルト)である場合、QGraphicsItem はアイテムの外接 rect をデフォルトとします。xmargin とymargin は、ビューがマージンに使用すべきピクセル数です。
指定された rect に到達できない場合、コンテンツは最も近い有効な位置にスクロールされます。
このアイテムがQGraphicsView で表示されていない場合、この関数は何もしない。
QGraphicsView::ensureVisible()も参照 。
void QGraphicsItem::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
この便宜関数は、secureVisible(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 のためのもので、このアイテムの hover leave イベントを受け取るために再実装することができる。デフォルトの実装では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 がゼロでない場合、このアイテムをブロックしているモーダルパネルに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() が真であっても、その祖先からは見えないかもしれない。また、isVisible() が偽であっても、その祖先からは見えるかもしれない。祖先が非表示の場合、アイテム自体も暗黙のうちに非表示になり、その場合この関数は false を返します。
isVisible() およびsetVisible()も参照 。
bool QGraphicsItem::isWidget() const
この項目がウィジェットである場合(すなわち、QGraphicsWidget )、true
を返す。そうでない場合は、false
を返す。
bool QGraphicsItem::isWindow() const
アイテムがQGraphicsWidget ウィンドウであればtrue
を返し、そうでなければ false を返す。
QGraphicsWidget::windowFlags()も参照してください 。
[virtual protected]
QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
この仮想関数は、QGraphicsItem によって呼び出され、カスタムアイテムにアイテムの状態の一部が変更されたことを通知する。この関数を再実装することで、変更に反応することができ、場合によっては(change に依存しますが)調整を行うことができます。
change value は新しい値です。値の型は に依存します。change
例
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionChange && scene()) { // value is the new position. QPointF newPos = value.toPointF(); QRectF rect = scene()->sceneRect(); if (!rect.contains(newPos)) { // Keep the item inside the scene rect. newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left()))); newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top()))); return newPos; } } return QGraphicsItem::itemChange(change, value); }
デフォルトの実装では何もせず、value を返します。
注意:この関数の再実装では、特定のQGraphicsItem 関数を呼び出すことはできません。詳しくはGraphicsItemChange のドキュメントを参照してください。
GraphicsItemChangeも参照してください 。
QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
このアイテムの座標をother にマップするQTransform を返します。ok が null でない場合、およびそのような変換がない場合、ok が指すブール値は false に設定されます。
この変換は、mapToItem() やmapFromItem() 関数に代わるもので、適切な変換を返すことで、図形や座標を自分でマッピングできるようにします。また、同じ2つのアイテムの間で繰り返しマッピングを行う際に、より効率的なコードを書くことができます。
注意: まれに、2 つのアイテムの間をマッピングする変換が存在しないことがあります。
mapToItem(),mapFromItem(),deviceTransform()も参照してください 。
[virtual protected]
void QGraphicsItem::keyPressEvent(QKeyEvent *event)
このイベントハンドラは、イベントevent 、このアイテムのキー押下イベントを受け取るために再実装することができます。デフォルトの実装では、イベントは無視されます。このハンドラを再実装すると、イベントはデフォルトで受け付けられます。
キーイベントは、ItemIsFocusable フラグを設定し、キーボード入力にフォーカスがあるアイテムに対してのみ受信されることに注意してください。
keyReleaseEvent()、setFocus()、QGraphicsScene::setFocusItem()、sceneEvent()も参照のこと 。
[virtual protected]
void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)
このイベントハンドラは、イベントevent 、このアイテムのキーリリースイベントを受け取るために再実装することができます。デフォルトの実装では、イベントは無視されます。このハンドラを再実装すると、イベントはデフォルトで受け付けられます。
キーイベントは、ItemIsFocusable フラグが設定され、キーボード入力にフォーカスがあるアイテムに対してのみ受信されることに注意してください。
keyPressEvent()、setFocus()、QGraphicsScene::setFocusItem()、sceneEvent()も参照のこと 。
QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
item の座標系にあるパスpath を、この項目の座標系にマップし、マップされたパスを返す。
item がnullptr
の場合、この関数はmapFromScene() と同じものを返す。
itemTransform(),mapFromParent(),mapFromScene(),mapToItem(), およびThe Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const
item の座標系にある点point を、この項目の座標系にマップし、マップされた座標を返す。
item がnullptr
の場合、この関数はmapFromScene() と同じものを返す。
itemTransform()、mapFromParent()、mapFromScene()、transform()、mapToItem() およびThe Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
item の座標系にある多角形polygon を、この項目の座標系にマップし、マップされた多角形を返す。
item がnullptr
の場合、この関数はmapFromScene() と同じものを返す。
itemTransform(),mapToItem(),mapFromParent(),transform(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
item の座標系にある矩形rect を、この項目の座標系にマップし、マップされた矩形を多角形として返す。
item がnullptr
の場合、この関数はmapFromScene() と同じものを返す。
itemTransform(),mapToItem(),mapFromParent(),transform(), およびThe Graphics View Coordinate Systemも参照してください 。
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
この便利な関数は、mapFromItem(item,QRectF(x,y,w,h)) を呼び出すことと同じである。
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
これはオーバーロードされた関数である。
この便利な関数は、mapFromItem(item,QPointF(x,y)) を呼び出すのと同じです。
QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const
このアイテムの親の座標系にあるパスpath を、このアイテムの座標系にマップし、マップされたパスを返す。
mapFromScene(),mapFromItem(),mapToParent(),The Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapFromParent(const QPointF &point) const
このアイテムの親の座標系にある点point を、このアイテムの座標系にマップし、マップされた座標を返す。
mapFromItem(),mapFromScene(),transform(),mapToParent(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const
このアイテムの親の座標系にある多角形polygon を、このアイテムの座標系にマップし、マップされた多角形を返す。
mapToParent(),mapToItem(),transform(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const
このアイテムの親の座標系にある矩形rect を、このアイテムの座標系にマップし、マップされた矩形を多角形として返す。
mapToParent(),mapFromItem(),transform(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const
この便利な関数は、mapFromItem(QRectF(x,y,w,h)) を呼び出すのと同じである。
QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const
これはオーバーロードされた関数である。
この便利な関数は、mapFromParent(QPointF(x,y)) を呼び出すことと同じです。
QPainterPath QGraphicsItem::mapFromScene(const QPainterPath &path) const
このアイテムのシーンの座標系にあるパスpath を、このアイテムの座標系にマップし、マップされたパスを返す。
mapFromParent(),mapFromItem(),mapToScene(),The Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapFromScene(const QPointF &point) const
このアイテムのシーンの座標系にある点point を、このアイテムの座標系にマップし、マップされた座標を返す。
mapFromItem(),mapFromParent(),transform(),mapToScene(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const
このアイテムのシーンの座標系にあるポリゴンpolygon を、このアイテムの座標系にマップし、マップされたポリゴンを返す。
mapToScene(),mapFromParent(),transform(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const
このアイテムのシーンの座標系にある矩形rect を、このアイテムの座標系にマップし、マップされた矩形を多角形として返す。
mapToScene(),mapFromItem(),transform(),The Graphics View Coordinate Systemも参照 。
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(), およびThe Graphics View Coordinate Systemも参照してください 。
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
こ の便宜関数は、 mapRectFromItem(item,QRectF(x,y,w,h)) を呼び出すのと等価です。
QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const
こ の項目の親の座標系にあ る 矩形rect を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ し た矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返す。
itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View Coordinate Systemも参照 。
QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
こ の便宜関数は、 mapRectFromParent(QRectF(x,y,w,h)) を呼び出すのと等価です。
QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const
シーンの座標系にあ る 矩形rect を、 こ の項目の座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返す。
itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View Coordinate Systemも参照 。
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(), およびThe Graphics View Coordinate Systemも参照してください 。
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
この便利な関数は、mapRectToItem(item,QRectF(x,y,w,h)) を呼び出すのと同じです。
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
こ の項目の座標系にあ る 矩形rect を、 その親の座標系にマ ッ プ し 、 マ ッ プ し た矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返す。
itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View Coordinate Systemも参照 。
QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
この便宜関数は、mapRectToParent(QRectF(x,y,w,h)) を呼び出すのと等価である。
QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const
こ の項目の座標系にあ る 矩形rect を、 シーン座標系にマ ッ プ し 、 マ ッ プ さ れた矩形を新 し い矩形 (すなわち、 結果の多角形の外接矩形) と し て返す。
itemTransform(),mapToParent(),mapToScene(),mapFromItem(),The Graphics View Coordinate Systemも参照 。
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() およびThe Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const
この項目の座標系にある点point をitem の座標系に写像し、写像された座標を返す。
item がnullptr
の場合、この関数はmapToScene() と同じものを返す。
itemTransform()、mapToParent()、mapToScene()、transform()、mapFromItem() およびThe Graphics View Coordinate Systemも参照してください 。
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
この項目の座標系にある多角形polygon をitem の座標系にマップし、マップされた多角形を返す。
item がnullptr
の場合、この関数はmapToScene() と同じものを返す。
itemTransform(),mapToParent(),mapToScene(),mapFromItem(), およびThe Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const
この項目の座標系にある矩形rect をitem の座標系に写像し、写像された矩形を多角形として返す。
item がnullptr
の場合、この関数はmapToScene() と同じものを返す。
itemTransform()、mapToParent()、mapToScene()、mapFromItem() およびThe Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
この便利な関数は、mapToItem(item,QRectF(x,y,w,h)) を呼び出すことと同じである。
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
これはオーバーロードされた関数である。
この便利な関数は、mapToItem(item,QPointF(x,y)) を呼び出すのと同じです。
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
このアイテムの座標系にあるパスpath を親の座標系にマップし、マップされたパスを返す。アイテムに親がない場合、path はシーンの座標系にマップされます。
mapToScene(),mapToItem(),mapFromParent(),The Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapToParent(const QPointF &point) const
このアイテムの座標系にある点point を、その親の座標系にマップし、マップされた座標を返す。アイテムに親がない場合、point はシーンの座標系にマップされます。
mapToItem(),mapToScene(),transform(),mapFromParent(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
このアイテムの座標系にある多角形polygon を親の座標系にマップし、マップされた多角形を返す。アイテムに親がない場合、polygon はシーンの座標系にマップされます。
mapToScene(),mapToItem(),mapFromParent(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
このアイテムの座標系にある矩形rect を親の座標系にマップし、マップされた矩形を多角形として返す。アイテムに親がない場合、rect はシーンの座標系にマップされます。
mapToScene(),mapToItem(),mapFromParent(),The Graphics View Coordinate Systemも参照してください 。
QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const
この便宜関数は、mapToParent(QRectF(x,y,w,h)) を呼び出すのと同じである。
QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const
これはオーバーロードされた関数である。
この便利な関数は、mapToParent(QPointF(x,y)) を呼び出すことと同じです。
QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const
このアイテムの座標系にあるパスpath をシーンの座標系にマップし、マップされたパスを返す。
mapToParent(),mapToItem(),mapFromScene(),The Graphics View Coordinate Systemも参照 。
QPointF QGraphicsItem::mapToScene(const QPointF &point) const
このアイテムの座標系にある点point をシーンの座標系にマップし、マップされた座標を返す。
mapToItem(),mapToParent(),transform(),mapFromScene(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const
このアイテムの座標系にあるポリゴンpolygon をシーンの座標系にマップし、マップされたポリゴンを返す。
mapToParent(),mapToItem(),mapFromScene(),The Graphics View Coordinate Systemも参照 。
QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const
このアイテムの座標系にある矩形rect をシーンの座標系にマップし、マップされた矩形を多角形として返す。
mapToParent(),mapToItem(),mapFromScene(),The Graphics View Coordinate Systemも参照 。
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() を参照)。この関数を再実装しない場合、press イベントはこのアイテムの下にある最上位のアイテムに伝搬し、他のマウスイベントはこのアイテムに配信されません。
この関数を再実装した場合、event がデフォルトで受け付けられ (QEvent::accept() を参照)、このアイテムがマウスグラバーとなります。これにより、このアイテムは将来の移動、リリース、ダブルクリックのイベントを受け取ることができます。event でQEvent::ignore() を呼び出すと、このアイテムはマウス・グラブを失い、event はその下にある一番上のアイテムに伝搬します。新しいマウス押下イベントを受け取らない限り、このアイテムにそれ以降のマウスイベントが配信されることはありません。
デフォルトの実装では、選択や移動などの基本的なアイテムのインタラクションを処理します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中でQGraphicsItem::mousePressEvent()を呼び出してください。
このイベントは、movable でもselectable でもないアイテムに対してはQEvent::ignore()d となります。
mouseMoveEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),sceneEvent()も参照してください 。
[virtual protected]
void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
イベントevent に対するこのイベントハンドラは、このアイテムのマウスリリースイベントを受け取るために再実装することができる。
event に対してQEvent::ignore() やQEvent::accept() を呼び出しても効果はありません。
デフォルトの実装は、選択と移動のような基本的なアイテムのインタラクションを処理します。この関数を再実装するときに基本実装を維持したい場合は、再実装の中で QGraphicsItem::mouseReleaseEvent() を呼び出してください。
mousePressEvent() は、マウス・イベントを受け取るグラフィック・アイテムを決定することに注意してください。詳細はmousePressEvent() の説明を参照してください。
mousePressEvent(),mouseMoveEvent(),mouseDoubleClickEvent(),sceneEvent()も参照して ください。
void QGraphicsItem::moveBy(qreal dx, qreal dy)
アイテムを水平方向にdx ポイント、垂直方向にdy ポイント移動する。この関数はsetPos(pos() +QPointF(dx,dy)) を呼び出すのと同じである。
qreal QGraphicsItem::opacity() const
0.0(透明)から1.0(不透明)の間で、このアイテムのローカルの不透明度を返します。この値は、親および祖先の値と結合されてeffectiveOpacity() になります。有効な不透明度は、アイテムの描画方法を決定し、QGraphicsView::items() などの関数で照会されたときの可視性にも影響します。
opacity プロパティは、paint() 関数に渡されるペインターの状態を決定します。アイテムがキャッシュされている場合、つまりItemCoordinateCache またはDeviceCoordinateCache の場合、レンダリング時に有効なプロパティがアイテムのキャッシュに適用されます。
デフォルトの不透明度は 1.0 で、完全に不透明です。
setOpacity()、paint()、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 パラメータは、アイテムの状態、露出領域、詳細レベルのヒントなどのスタイルオプションを提供します。widget 引数はオプションです。キャッシュされたペイントの場合、widget は常に 0 です。
void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); }
ペインターのペンはデフォルトで 0-width で、ペイントデバイスのパレットからQPalette::Text ブラシに初期化されます。ブラシはQPalette::Window に初期化されます。
レンダリングのアーティファクトを避けるために、すべてのペイントをboundingRect() の境界内に制限するようにしてください (QGraphicsView はペインターをクリップしないため)。特に、QPainter が割り当てられたQPen を使用してシェイプのアウトラインをレンダリングする場合、アウトラインの半分がレンダリングするシェイプの外側に、半分が内側に描画されます (たとえば、ペンの幅が 2 単位の場合、アウトラインはboundingRect() の 1 単位内側に描画する必要があります)。QGraphicsItem は、幅が 0 以外のコスメティックペンの使用をサポートしていません。
すべての描画はローカル座標で行われます。
注: update() が呼び出されない限り、アイテムは常にまったく同じ方法で再描画されることが必須です。言い換えれば、update() が呼び出されない限り、2 回の paint() の呼び出しは常に同じ出力を生成しなければなりません。
注意: アイテムのキャッシュを有効にしても、update() が明示的に呼び出されなくても、グラフィックス・ビュー・フレームワークによって paint() が一度だけ呼び出されることは保証されません。詳細はsetCacheMode() のドキュメントを参照してください。
setCacheMode(),QPen::width(),アイテム座標,ItemUsesExtendedStyleOptionも参照してください 。
QGraphicsItem *QGraphicsItem::panel() const
アイテムのパネル、またはこのアイテムがパネルを持っていない場合はnullptr
を返します。アイテムがパネルであれば、それ自身を返します。そうでない場合は、パネルに最も近い祖先を返します。
isPanel() およびItemIsPanelも参照してください 。
QGraphicsItem::PanelModality QGraphicsItem::panelModality() const
この項目のモダリティを返します。
setPanelModality()も参照してください 。
QGraphicsItem *QGraphicsItem::parentItem() const
このアイテムの親アイテムへのポインタを返します。このアイテムに親がない場合は、nullptr
が返されます。
setParentItem() およびchildItems()も参照 。
QGraphicsObject *QGraphicsItem::parentObject() const
アイテムの親へのポインタをQGraphicsObject にキャストして返します。 親アイテムがQGraphicsObject でない場合はnullptr
を返します。
parentItem() およびchildItems()も参照して ください。
QGraphicsWidget *QGraphicsItem::parentWidget() const
アイテムの親ウィジェットへのポインタを返します。アイテムの親ウィジェットは、ウィジェットである最も近い親アイテムです。
parentItem() およびchildItems()も参照してください 。
QPointF QGraphicsItem::pos() const
アイテムの位置を親座標で返す。アイテムに親がない場合、その位置はシーン座標で与えられる。
アイテムの位置は、親座標における原点(ローカル座標 (0, 0))を表します。この関数は、mapToParent(0, 0)と同じものを返します。
便宜上、scenePos() を呼び出すと、親に関係なく、アイテムのシーン座標での位置を決定することもできます。
x(),y(),setPos(),transform(),The Graphics View Coordinate Systemも参照してください 。
[protected]
void QGraphicsItem::prepareGeometryChange()
ジオメトリの変更のためにアイテムを準備する。アイテムの外接矩形を変更する前にこの関数を呼び出して、QGraphicsScene'のインデックスを最新の状態に保ちます。
prepareGeometryChange() は、必要であればupdate() を呼び出します。
例:
void CircleItem::setRadius(qreal newRadius) { if (radius != newRadius) { prepareGeometryChange(); radius = newRadius; } }
boundingRect()も参照 。
void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)
filterItem からこのアイテムのイベント・フィルタを削除します。
installSceneEventFilter()も参照 。
void QGraphicsItem::resetTransform()
この項目の変換行列を同一行列に、またはすべての変換プロパティをデフォルト値にリセットします。これはsetTransform(QTransform())
を呼び出すのと同じです。
setTransform() およびtransform()も参照してください 。
qreal QGraphicsItem::rotation() const
Z軸を中心とした時計回りの回転を度単位で返します。デフォルト値は 0(つまり、アイテムは回転しない)。
この回転は、アイテムのscale(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。
setRotation()、transformOriginPoint()、Transformationsも参照 。
qreal QGraphicsItem::scale() const
項目のスケール・ファクターを返します。デフォルトのスケールファクターは 1.0(つまり、アイテムはスケールされない)。
このスケールは、アイテムのrotation()、transform()、transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。
setScale()、rotation()、Transformationsも参照してください 。
QGraphicsScene *QGraphicsItem::scene() const
アイテムがシーンに保存されていない場合は、nullptr
。
アイテムをシーンに追加または移動するには、QGraphicsScene::addItem ()を呼び出す。
QRectF QGraphicsItem::sceneBoundingRect() const
sceneTransform() とboundingRect() を組み合わせて、シーン座標でこのアイテムの外接矩形を返します。
boundingRect() およびThe Graphics View Coordinate Systemも参照してください 。
[virtual protected]
bool QGraphicsItem::sceneEvent(QEvent *event)
この仮想関数は、この項目に対するイベントを受け取ります。専用イベントハンドラcontextMenuEvent(),focusInEvent(),focusOutEvent(),hoverEnterEvent(),hoverMoveEvent(),hoverLeaveEvent(),keyPressEvent(),keyReleaseEvent(),mousePressEvent(),mouseReleaseEvent(),mouseMoveEvent(),mouseDoubleClickEvent() にディスパッチされる前にイベントをインターセプトするために、この関数を再実装します。
イベントが認識され、処理された場合はtrue
を返します。そうでない場合(イベント・タイプが認識されなかった場合など)は false を返します。
event はインターセプトされたイベントです。
[virtual protected]
bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
アイテムwatched に対するイベントをフィルタリングする。event はフィルタリングされたイベントである。
サブクラスでこの関数を再実装すると、アイテムが応答できるようになる前に、それらのアイテムに送信されるすべてのイベントをインターセプトし、他のアイテムのためのイベントフィルタとして使用することが可能になります。
再実装は、指定されたイベントのさらなる処理を防止するためにtrueを返し、監視されるアイテムに配信されないことを保証するか、またはイベントがイベントシステムによってさらに伝播されるべきであることを示すためにfalseを返さなければならない。
installSceneEventFilter()も参照のこと 。
QPointF QGraphicsItem::scenePos() const
アイテムの位置をシーン座標で返す。これはmapToScene(0, 0)
を呼び出すのと同じである。
pos(),sceneTransform(),The Graphics View Coordinate Systemも参照してください 。
QTransform QGraphicsItem::sceneTransform() const
このアイテムのシーン変換行列を返す。この行列は、このアイテムのローカル座標系からシーンの座標系に座標や幾何学的形状をマッピングするために使用できます。シーンから座標をマップするには、まず返された行列を反転する必要があります。
例
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // returns QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // returns QPointF(0, 0);
例: アイテムのローカル変換のみを返すtransform() とは異なり、この関数は、アイテムの(および親の)位置と、すべての変換プロパティを含みます。
transform(),setTransform(),scenePos(),The Graphics View Coordinate System, およびTransformationsも参照して ください。
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
dx,dy によってrect の内容をスクロールする。rect がヌル矩形(デフォルト)の場合、アイテムの外接矩形がスクロールされます。
スクロールは、アイテムの内容(またはアイテムの一部)が垂直方向または水平方向に移動した場合に、単に再描画するよりも高速な代替手段を提供します。現在の変換と描画デバイス(つまりビューポート)の機能によっては、この操作は単に memmove() を使ってピクセルをある場所から別の場所に移動させるだけでよい場合があります。ほとんどの場合、これは領域全体を再レンダリングするよりも高速です。
スクロールが終わると、アイテムは新しく表示された領域の更新を発行します。スクロールがサポートされていない場合(たとえば、スクロール最適化の恩恵を受けないOpenGLビューポートにレンダリングしている場合)、この関数はupdate(rect)を呼び出すのと同じです。
注意:スクロールがサポートされるのは、QGraphicsItem::ItemCoordinateCache が有効な場合のみです。それ以外の場合は、この関数を呼び出すと update(rect) を呼び出すのと同じことになります。アイテムが不透明で、他のアイテムに重なっていないことが確実に分かっている場合は、rect をビューポート座標にマッピングして、ビューポートをスクロールすることができます。
QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect);
boundingRect()も参照 。
void QGraphicsItem::setAcceptDrops(bool on)
on が true の場合、このアイテムはドラッグ&ドロップイベントを受け付けます。そうでない場合、ドラッグ&ドロップイベントは受け付けられません。デフォルトでは、アイテムはドラッグ&ドロップイベントを受け付けません。
acceptDrops()も参照してください 。
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
enabled が true の場合、このアイテムはホバーイベントを受け付け、そうでない場合は無視します。デフォルトでは、アイテムはホバーイベントを受け付けません。
ホバーイベントは、現在のマウスグラバーアイテムがないときに送られます。マウスカーソルがアイテムに入った時、アイテムの中を移動した時、アイテムから離れた時に送られます。ホバーイベントは、アイテムが入力された時にそのアイテムをハイライトしたり、マウスカーソルがアイテムの上に移動した時のトラッキングによく使われます(QWidget::mouseTracking と同じです)。
親アイテムは子アイテムの前にホバー入力イベントを受け取り、子アイテムの後にホバー離脱イベントを受け取ります。しかし、カーソルが子アイテムに入った場合、親アイテムは hover leave イベントを受け取りません。カーソルが子アイテムの領域を含む親アイテムの領域を離れるまで、親アイテムは "hovered" のままです。
親アイテムが子イベントを処理する場合、カーソルが子アイテムを通過すると、ホバー移動、ドラッグ移動、ドロップイベントを受け取りますが、子アイテムの代わりにホバー入力、ホバー離脱、ドラッグ入力、ドラッグ離脱イベントを受け取ることはありません。
ウィンドウ装飾を持つQGraphicsWidget は、acceptHoverEvents() の値に関係なく、ホバーイベントを受け取ります。
acceptHoverEvents()、hoverEnterEvent()、hoverMoveEvent()、hoverLeaveEvent()も参照 。
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
enabled が true の場合、このアイテムはtouch events を受け付ける。そうでない場合は無視する。デフォルトでは、アイテムはタッチイベントを受け付けません。
acceptTouchEvents()も参照してください 。
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
このアイテムがマウスイベントを受け付けるマウスbuttons を設定します。
デフォルトでは、すべてのマウスボタンが受け付けられます。アイテムがマウスボタンを受け付けると、そのボタンのマウス押下イベントが配信されたときに、そのアイテムがマウスグラバーアイテムになります。しかし、アイテムがマウスボタンを受け付けない場合、QGraphicsScene は、その下にある受け付ける最初のアイテムにマウスイベントを転送します。
あるアイテムのマウスイベントを無効にする(つまり、マウスイベントに対して透明化する)には、 setAcceptedMouseButtons(Qt::NoButton) を呼び出します。
acceptedMouseButtons() およびmousePressEvent()も参照の こと。
void QGraphicsItem::setActive(bool active)
active が真で、シーンがアクティブな場合、このアイテムのパネルはアクティブになる。そうでなければ、パネルは非アクティブになる。
アイテムがアクティブなシーンの一部でない場合、active 、シーンがアクティブになるか、アイテムがシーンに追加された時に、パネルに何が起こるかを決定する。trueの場合、アイテムがシーンに追加されるか、シーンがアクティブになると、アイテムのパネルはアクティブになる。そうでなければ、アイテムは、シーンのアクティブ化された状態とは無関係に、非アクティブのままである。
isPanel(),QGraphicsScene::setActivePanel(),QGraphicsScene::isActive()も参照 。
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
外接領域の粒度をgranularity に設定する。デフォルト値は 0 (すなわち、 外接領域がアイテムの外接矩形に対応する最小の粒度)。
granularity は、boundingRegion() が、 アイテムの外接領域がど の程度細か く あ る べ き か を算出す る ために用い ら れます。達成可能な最高の粒度は 1 で、boundingRegion() は、それぞれのデバイスで可能な最も細かいアウトラインを返します (たとえば、QGraphicsView ビューポートの場合、これはピクセルの完全な境界領域を与えます)。可能な最小の粒度は0です。granularity の値は、デバイスの解像度と境界領域の解像度の比率を表します(例えば、0.25の値は、各チャンクが4x4のデバイスユニット/ピクセルに対応する領域を提供します)。
boundingRegionGranularity()も参照してください 。
void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
アイテムのキャッシュモードをmode に設定する。
オプションの引数logicalCacheSize は、ItemCoordinateCache モードでのみ使用され、キャッシュバッファの解像度を記述します。logicalCacheSize が (100, 100) の場合、QGraphicsItem は、アイテム自体の論理サイズに関係なく、アイテムをグラフィックメモリの 100x100 ピクセルに収めます。デフォルトでは、QGraphicsItem はboundingRect() のサイズを使用する。ItemCoordinateCache 以外のキャッシュモードでは、logicalCacheSize は無視されます。
キャッシュは、アイテムがそれ自体の再描画にかなりの時間を費やす場合、レンダリングを高速化することができます。特に、アイテムが再描画に費やす時間が、QGraphicsItem がキャッシュから再描画に費やす時間よりも短い場合は、キャッシュによってレンダリングが遅くなることがあります。
キャッシュが有効になっている場合、アイテムのpaint() 関数は通常、オフスクリーンの pixmap キャッシュに描画します。その後の再描画要求に対しては、Graphics View フレームワークがキャッシュから再描画します。このアプローチは、すべてのキャッシュをOpenGLテクスチャとして保存するQGLWidgetで特にうまく機能します。
最適なパフォーマンスを得るためには、QPixmapCache のキャッシュ上限を変更する必要があるかもしれないことに注意してください。
異なるキャッシュモードについては、CacheMode のドキュメントを参照してください。
注意: キャッシュを有効にすることは、アイテムのpaint() 関数が、明示的なupdate() 呼び出しに応答してのみ呼び出されることを意味しません。このような場合、アイテムのpaint() 関数は、update() の呼び出しがなくても呼び出されます(つまり、キャッシュが有効でない場合とまったく同じです)。
cacheMode()、CacheMode 、およびQPixmapCache::setCacheLimit()も参照してください 。
void QGraphicsItem::setCursor(const QCursor &cursor)
アイテムの現在のカーソル形状をcursor に設定する。 マウスカーソルがこのアイテムの上にあるとき、カーソルはこの形状になる。便利な形はlist of predefined cursor objects を参照してください。
エディタアイテムはIビームカーソルを使用したいかもしれません:
item->setCursor(Qt::IBeamCursor);
カーソルが設定されていない場合、下のアイテムのカーソルが使用されます。
cursor()、hasCursor()、unsetCursor()、QWidget::cursor 、QGuiApplication::overrideCursor()も参照して ください。
void QGraphicsItem::setData(int key, const QVariant &value)
valueこのアイテムのカスタムデータをキーkey に設定します。
カスタム・アイテム・データは、任意のアイテムの任意のプロパティを格納するのに便利です。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 が真の場合、項目フラグflag が有効になり、そうでない場合は無効になる。
void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)
アイテムのフラグをflags に設定する。flags にあるフラグはすべて有効になり、flags にないフラグはすべて無効になる。
アイテムにフォーカスがあり、flags がItemIsFocusable を有効にしない場合、この関数を呼び出した結果、アイテムはフォーカスを失う。同様に、アイテムが選択されていて、flags がItemIsSelectable を有効にしていない場合、アイテムは自動的に選択解除される。
デフォルトでは、フラグは有効になっていない。(QGraphicsWidget は、位置の変化を追跡するために、デフォルトでItemSendsGeometryChanges フラグを有効にする)。
void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
この項目にキーボード入力フォーカスを与える。引数focusReason は、この関数が生成するfocus event に渡されます。この引数は、アイテムにフォーカスが当たった原因を説明するために使用されます。
ItemIsFocusable フラグを設定した有効なアイテムだけがキーボードフォーカスを受け付けることができる。
このアイテムが表示されていなかったり、アクティブでなかったり、シーンに関連付けられていなかったりすると、即座に入力フォーカスを得ることはできません。しかし、このアイテムは、そのサブツリーのアイテムの優先フォーカスアイテムとして登録されます。
この関数を呼び出した結果、このアイテムはfocusReason と共にfocus in event を受け取る。 他のアイテムが既にフォーカスを得ている場合、そのアイテムはまず入力フォーカスを失ったことを示すfocus out event を受け取る。
clearFocus()、hasFocus()、focusItem()、focusProxy()も参照 。
void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
アイテムのフォーカス・プロキシをitem に設定する。
アイテムがフォーカス・プロキシを持つ場合、アイテムが入力フォーカスを得たとき、フォーカス・プロキシが入力フォーカスを受け取ります。アイテム自体はまだフォーカスを持ちますが(つまり、hasFocus() は 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 の場合、opacity プロパティはアイテムのレンダリング時にキャッシュに適用されます。
アイテムの不透明度が親とどのように組み合わされるかに影響する2つのアイテムフラグがあります:ItemIgnoresParentOpacity とItemDoesntPropagateOpacityToChildren 。
注意: アイテムの不透明度を 0 に設定しても、アイテムは不可視にはなりません(isVisible() によれば)が、アイテムは不可視のように扱われます。詳しくはsetVisible() のドキュメントを参照。
opacity()、effectiveOpacity()、setVisible()も参照 。
void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)
この項目のモダリティをpanelModality に設定する。
可視アイテムのモダリティを変更すると、即座に反映されます。
panelModality()も参照してください 。
void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
このアイテムの親アイテムをnewParent に設定します。 このアイテムにすでに親がある場合は、まず前の親から削除されます。newParent が 0 の場合、このアイテムはトップレベルのアイテムになる。
これは、暗黙的にこのグラフィックアイテムを親のシーンに追加することに注意してください。アイテムを自分でシーンにadd するべきではありません。
newParent の祖先であるアイテムに対してこの関数を呼び出したときの動作は未定義です。
parentItem() およびchildItems()も参照してください 。
void QGraphicsItem::setPos(const QPointF &pos)
アイテムの位置を、親座標であるpos に設定する。親を持たないアイテムの場合、pos はシーン座標になります。
アイテムの位置は、親座標における原点(ローカル座標 (0, 0))を表します。
pos(),scenePos(),The Graphics View Coordinate Systemも参照 。
void QGraphicsItem::setPos(qreal x, qreal y)
これはオーバーロードされた関数である。
この便利な関数は、setPos(QPointF(x,y)) を呼び出すのと等価である。
void QGraphicsItem::setRotation(qreal angle)
Z 軸を中心とした時計回りの回転angle を度単位で設定する。デフォルト値は 0(つまり、アイテムは回転しない)。負の値を指定すると、項目は反時計回りに回転します。通常、回転角度は (-360, 360) の範囲ですが、この範囲外の値を指定することも可能です(例えば、370 度の回転は 10 度の回転と同じです)。
アイテムは、デフォルトでは (0, 0) であるトランスフォームの原点を中心に回転します。setTransformOriginPoint() を呼び出すことで、別の変換原点を選択できます。
回転は、アイテムのscale(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。
rotation()、setTransformOriginPoint()、Transformationsも参照してください 。
void QGraphicsItem::setScale(qreal factor)
アイテムのスケールfactor を設定します。デフォルトのスケールファクターは1.0です(つまり、アイテムはスケールされません)。スケールファクターが 0.0 の場合、項目は 1 点に折りたたまれます。負のスケールファクターを指定すると、アイテムは反転してミラー化されます(つまり、180 度回転します)。
アイテムは、デフォルトでは (0, 0) の変換原点を中心に拡大縮小されます。setTransformOriginPoint() を呼び出すと、別の変換原点を選択できます。
このスケールは、アイテムのrotation(),transform(),transformations() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。
scale(),setTransformOriginPoint(), およびTransformations Exampleも参照してください 。
void QGraphicsItem::setSelected(bool selected)
selected が真で、この項目が選択可能であれば、この項目は選択され、そうでなければ非選択となる。
アイテムがグループ内にある場合、この関数によってグループ全体の選択状態が切り替わります。グループが選択されている場合は、グループ内のすべての項目も選択され、グループが選択されていない場合は、グループ内のどの項目も選択されません。
選択できるのは、可視で有効な、選択可能な項目だけです。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(),The Graphics View Coordinate System, およびTransformationsも参照してください 。
void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)
変換のためのorigin ポイントをアイテム座標で設定します。
transformOriginPoint() およびTransformationsも参照してください 。
void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)
これはオーバーロードされた関数です。
変換の原点をアイテム座標で設定します。これは、 setTransformOriginPoint(QPointF(x,y)) を呼び出すことと等価です。
setTransformOriginPoint() およびTransformationsも参照してください 。
void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)
このアイテムに現在適用されているグラフィックスのリストtransformations (QGraphicsTransform) を設定します。
アイテムの回転や拡大縮小を行いたい場合は、代わりにsetRotation() またはsetScale() を呼び出します。アイテムに任意の変形を設定したい場合は、setTransform() を呼び出します。
QGraphicsTransform は、アイテムに個別のトランスフォーム操作を連鎖的に適用して制御するためのものです。これは特にアニメーションで便利で、各トランスフォーム操作を独立して、あるいは異なる方法で補間する必要があります。
トランスフォームは、アイテムのrotation(),scale(),transform() と組み合わせて、アイテムの座標系を親アイテムにマッピングします。
transformations(),scale(),setTransformOriginPoint(),Transformationsも参照 。
void QGraphicsItem::setVisible(bool visible)
visible が真の場合、アイテムは可視化される。そうでない場合、アイテムは不可視になる。不可視のアイテムは描画されず、イベントも受け取らない。特に、マウスイベントは不可視アイテムを通過し、後ろにあるアイテムに送られます。不可視アイテムはまた選択不可能で、入力フォーカスを取ることができず、QGraphicsScene のアイテム位置関数によって検出されません。
マウスをつかんでいる間(つまり、マウスイベントを受け取っている間)にアイテムが見えなくなると、自動的にマウスのつかみは失われ、アイテムを再び見えるようにしてもつかみは回復しません。
同様に、不可視のアイテムはフォーカスを持つことができないので、不可視になったときにアイテムがフォーカスを持っていた場合、フォーカスを失います。
親アイテムを非表示にすると、その子アイテムもすべて非表示になります。親アイテムを表示すると、明示的に非表示にされていない限り、すべての子アイテムが表示されます(つまり、子アイテムで setVisible(false) を呼び出すと、親アイテムが非表示にされた後、再度表示されても再表示されません)。
項目はデフォルトで可視です。新しい項目で setVisible() をコールする必要はありません。
注意: 不透明度が 0 に設定されたアイテムは、不可視アイテムのように扱われますが、依然として可視であるとみなされます: マウスイベントはそれを通過し、QGraphicsView::items() によって返されるアイテムには含まれません。しかし、アイテムはフォーカスを保持します。
isVisible()、show()、hide()、setOpacity()も参照 。
void QGraphicsItem::setX(qreal x)
アイテムの位置のx 座標を設定する。setPos(x,y()) を呼び出すのと同じ。
void QGraphicsItem::setY(qreal y)
アイテムの位置のy 座標を設定する。setPos(x(), y) を呼び出すのと同じ。
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 で返します。すべての標準 graphicsitem クラスは、一意な値に関連付けられています;QGraphicsItem::Type を参照してください。この型情報は、qgraphicsitem_cast() が型を区別するために使用します。
デフォルトの実装(QGraphicsItem )は、UserType を返します。
カスタム・アイテムでqgraphicsitem_cast() を使用できるようにするには、この関数を再実装し、カスタム・アイテムの型に等しい Type enum 値を宣言します。カスタム項目は、UserType (65536) 以上の値を返す必要があります。
例えば
class CustomItem : public QGraphicsItem { public: enum { Type = UserType + 1 }; int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; } ... };
UserTypeも参照してください 。
void QGraphicsItem::ungrabKeyboard()
キーボードのグラブを解除する。
grabKeyboard() およびungrabMouse()も参照 。
void QGraphicsItem::ungrabMouse()
マウスグラブを解除する。
grabMouse() およびungrabKeyboard()も参照 。
void QGraphicsItem::unsetCursor()
この項目のカーソルを消去する。
hasCursor() およびsetCursor()も参照 。
void QGraphicsItem::update(const QRectF &rect = QRectF())
このアイテムのrect でカバーされている領域の再描画をスケジュールします。この関数は、アイテムの外観やサイズが変わったときなど、再描画が必要なときにいつでも呼び出すことができます。
この関数は即座に描画を行うのではなく、イベントループに制御が到達した後にQGraphicsView によって処理される描画要求をスケジュールします。アイテムが再描画されるのは、関連するビューに表示されている場合のみです。
アイテムが再描画される副作用として、領域rect に重なる他のアイテムも再描画されることがある。
アイテムが不可視の場合(すなわち、isVisible() がfalse
を返す場合)、この関数は何もしません。
paint() およびboundingRect()も参照 。
void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)
これはオーバーロードされた関数である。
この便利な関数は、update(QRectF(x,y,width,height)) を呼び出すのと等価である。
[protected]
void QGraphicsItem::updateMicroFocus()
アイテムのマイクロフォーカスを更新する。
QInputMethodも参照してください 。
[virtual protected]
void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)
このイベントハンドラは、イベントevent 、このアイテムのホイールイベントを受け取るために再実装することができる。この関数を再実装すると、event がデフォルトで受け入れられる。
イベントを無視すると(つまり、QEvent::ignore() を呼び出すと)、このアイテムの下にあるすべてのアイテムに伝播します。イベントを受け入れるアイテムがない場合、イベントはシーンによって無視され、ビューに伝搬します(例えば、ビューの垂直スクロールバー)。
デフォルトの実装では、イベントは無視されます。
sceneEvent()も参照してください 。
QGraphicsWidget *QGraphicsItem::window() const
アイテムのウィンドウを返します。このアイテムにウィンドウがない場合はnullptr
を返します。アイテムがウィンドウの場合、それ自身を返します。そうでない場合は、ウィンドウに最も近い祖先を返します。
QGraphicsWidget::isWindow()も参照してください 。
qreal QGraphicsItem::x() const
この便宜関数は、pos().x() を呼び出すのと同じである。
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も参照してください 。
© 2025 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.