このページでは

QGraphicsScene Class

QGraphicsScene クラスは、多数の 2D グラフィック項目を管理するためのサーフェスを提供します。詳細...

ヘッダー: #include <QGraphicsScene>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QObject

パブリック型

enum ItemIndexMethod { BspTreeIndex, NoIndex }
enum SceneLayer { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers }
flags SceneLayers

プロパティ

パブリック関数

QGraphicsScene(QObject *parent = nullptr)
QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)
QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)
virtual ~QGraphicsScene()
QGraphicsItem *activePanel() const
QGraphicsWidget *activeWindow() const
QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
void addItem(QGraphicsItem *item)
QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen())
QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())
QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap)
QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont())
QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont())
QGraphicsProxyWidget *addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())
QBrush backgroundBrush() const
int bspTreeDepth() const
void clearFocus()
QList<QGraphicsItem *> collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItemGroup *createItemGroup(const QList<QGraphicsItem *> &items)
void destroyItemGroup(QGraphicsItemGroup *group)
QGraphicsItem *focusItem() const
bool focusOnTouch() const
QFont font() const
QBrush foregroundBrush() const
bool hasFocus() const
qreal height() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)
bool isActive() const
QGraphicsItem *itemAt(const QPointF &position, const QTransform &deviceTransform) const
QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const
QGraphicsScene::ItemIndexMethod itemIndexMethod() const
QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const
QList<QGraphicsItem *> items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const
QRectF itemsBoundingRect() const
qreal minimumRenderSize() const
QGraphicsItem *mouseGrabberItem() const
QPalette palette() const
void removeItem(QGraphicsItem *item)
void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
QRectF sceneRect() const
QList<QGraphicsItem *> selectedItems() const
QPainterPath selectionArea() const
bool sendEvent(QGraphicsItem *item, QEvent *event)
void setActivePanel(QGraphicsItem *item)
void setActiveWindow(QGraphicsWidget *widget)
void setBackgroundBrush(const QBrush &brush)
void setBspTreeDepth(int depth)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusOnTouch(bool enabled)
void setFont(const QFont &font)
void setForegroundBrush(const QBrush &brush)
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)
void setMinimumRenderSize(qreal minSize)
void setPalette(const QPalette &palette)
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)
void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())
void setStickyFocus(bool enabled)
void setStyle(QStyle *style)
bool stickyFocus() const
QStyle *style() const
void update(qreal x, qreal y, qreal w, qreal h)
QList<QGraphicsView *> views() const
qreal width() const

パブリックスロット

void advance()
void clear()
void clearSelection()
void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = AllLayers)
void update(const QRectF &rect = QRectF())

シグナル

void changed(const QList<QRectF> &region)
void focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)
void sceneRectChanged(const QRectF &rect)
void selectionChanged()

protected 関数

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void drawBackground(QPainter *painter, const QRectF &rect)
virtual void drawForeground(QPainter *painter, const QRectF &rect)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *focusEvent)
virtual void focusOutEvent(QFocusEvent *focusEvent)
virtual void helpEvent(QGraphicsSceneHelpEvent *helpEvent)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual void keyPressEvent(QKeyEvent *keyEvent)
virtual void keyReleaseEvent(QKeyEvent *keyEvent)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

再実装された保護関数

virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *watched, QEvent *event) override

protectedスロット

virtual bool focusNextPrevChild(bool next)

詳細な説明

このクラスは、QGraphicsItemのコンテナとして機能します。QGraphicsView と組み合わせて使用し、2D平面上に線、矩形、テキスト、さらにはカスタムアイテムなどのグラフィカルアイテムを表示します。QGraphicsSceneは、Graphics View Frameworkの一部です。

また、QGraphicsSceneは、アイテムの位置を効率的に特定する機能や、シーン上の任意の領域内でどのアイテムが表示されているかを特定する機能も提供します。QGraphicsView ウィジェットを使用すると、シーン全体を表示することも、ズームインしてシーンの一部のみを表示することも可能です。

例:

QGraphicsScene scene;
scene.addText("Hello, world!");

QGraphicsView view(&scene);
view.show();

QGraphicsScene 自体には視覚的な外観はなく、アイテムの管理のみを行う点に注意してください。シーンを可視化するには、QGraphicsView ウィジェットを作成する必要があります。

シーンにアイテムを追加するには、まず QGraphicsScene オブジェクトを構築することから始めます。 その後、2つの方法があります。既存のQGraphicsItem オブジェクトをaddItem()を呼び出して追加するか、あるいはaddEllipse()、addLine()、addPath()、addPixmap()、addPolygon()、addRect()、addText()のいずれかの便利関数を呼び出す方法です。これらはすべて、新しく追加されたアイテムへのポインタを返します。 これらの関数で追加されたアイテムの寸法は、そのアイテムの座標系を基準としており、アイテムの位置はシーン内で (0, 0) に初期化されます。

その後、QGraphicsView を使用してシーンを可視化できます。シーンが変化した場合(例えば、アイテムが移動したり変形したりした場合)、QGraphicsSceneはchanged()シグナルを発行します。アイテムを削除するには、removeItem()を呼び出します。

QGraphicsScene は、アイテムの位置を効率的に管理するためにインデックス作成アルゴリズムを使用します。デフォルトでは、BSP(Binary Space Partitioning)ツリーが使用されます。これは、ほとんどのアイテムが静的(つまり、移動しない)である大規模なシーンに適したアルゴリズムです。setItemIndexMethod() を呼び出すことで、このインデックスを無効にすることができます。利用可能なインデックスアルゴリズムの詳細については、itemIndexMethod プロパティを参照してください。

シーンのバウンディング矩形は、setSceneRect() を呼び出すことで設定されます。アイテムはシーン上の任意の位置に配置でき、シーンのサイズはデフォルトで無制限です。 シーンの矩形は、シーン内のアイテムのインデックスを維持するための内部管理にのみ使用されます。シーンの矩形が設定されていない場合、QGraphicsScene はitemsBoundingRect() によって返される、すべてのアイテムのバウンディング領域をシーンの矩形として使用します。 ただし、itemsBoundingRect() は、シーン上のすべてのアイテムの位置情報を収集して処理を行うため、比較的時間がかかる関数です。このため、大規模なシーンを扱う場合は、常にシーン矩形を設定する必要があります。

QGraphicsSceneの最大の強みの1つは、アイテムの位置を効率的に特定できることです。シーン上に数百万個のアイテムが存在する場合でも、items()関数を使用すれば、数ミリ秒以内にアイテムの位置を特定できます。items() にはいくつかのオーバーロードが存在します。特定の位置にあるアイテムを検索するもの、ポリゴンや矩形の内側にある、あるいはそれらと交差するアイテムを検索するものなどがあります。 返される項目のリストはスタック順にソートされており、最上位の項目がリストの先頭になります。利便性のため、指定された位置にある最上位の項目を返すitemAt()関数も用意されています。

QGraphicsSceneは、シーンの選択情報を管理します。アイテムを選択するにはsetSelectionArea()を呼び出し、現在の選択を解除するにはclearSelection()を呼び出します。選択されているすべてのアイテムのリストを取得するには、selectedItems()を呼び出します。

イベントの処理と伝播

QGraphicsSceneが担うもう一つの役割は、QGraphicsView からのイベントを伝播させることです。シーンにイベントを送信するには、QEvent を継承するイベントを生成し、例えばQCoreApplication::sendEvent() を使用して送信します。event() は、そのイベントを個々のアイテムにディスパッチする役割を担っています。 一般的なイベントのいくつかは、便利なイベントハンドラによって処理されます。たとえば、キー押下イベントはkeyPressEvent() によって処理され、マウスクリックイベントはmousePressEvent() によって処理されます。

キーイベントはフォーカスアイテムに配信されます。フォーカスアイテムを設定するには、フォーカスを受け入れるアイテムを引数としてsetFocusItem()を呼び出すか、アイテム自体がQGraphicsItem::setFocus()を呼び出すことができます。現在のフォーカスアイテムを取得するには、focusItem()を呼び出します。ウィジェットとの互換性を確保するため、シーンも独自のフォーカス情報を保持しています。 デフォルトでは、シーンはフォーカスを持っておらず、すべてのキーイベントは破棄されます。setFocus() が呼び出された場合、またはシーン上のアイテムがフォーカスを獲得した場合、シーンは自動的にフォーカスを獲得します。シーンがフォーカスを持っている場合、hasFocus() は true を返し、キーイベントは(存在する場合)フォーカスを持つアイテムに転送されます。 シーンがフォーカスを失った場合(つまり、アイテムがフォーカスを持っている間に誰かがclearFocus()を呼び出した場合)、シーンはそのアイテムのフォーカス情報を保持し、シーンがフォーカスを回復すると、最後のフォーカス対象アイテムが確実にフォーカスを回復するようにします。

マウスオーバー効果については、QGraphicsSceneがホバーイベントをディスパッチします。 アイテムがホバーイベントを受け入れる場合(QGraphicsItem::acceptHoverEvents() を参照)、マウスがその領域に入ったときにGraphicsSceneHoverEnter イベントを受け取ります。マウスがアイテムの領域内で移動し続けると、QGraphicsScene はGraphicsSceneHoverMove イベントを送信します。マウスがアイテムの領域から離れたとき、アイテムはGraphicsSceneHoverLeave イベントを受け取ります。

すべてのマウスイベントは、現在のマウスのグラバーとなっているアイテムに配信されます。アイテムは、マウスイベントを受け入れる(QGraphicsItem::acceptedMouseButtons() を参照)状態で、マウスボタンが押された際に、シーンのマウスのグラバーとなります。他のマウスボタンが押されていない状態でマウスボタンが離された際に、マウスリリースイベントを受信するまで、そのアイテムはマウスのグラバーのままとなります。mouseGrabberItem() を呼び出すことで、現在マウスをグラブしているアイテムを確認できます。

QGraphicsItem およびQGraphicsViewも参照してください 。

メンバ型のドキュメント

enum QGraphicsScene::ItemIndexMethod

この列挙型は、QGraphicsScene が提供する、シーン上のアイテムの位置情報を管理するためのインデックス作成アルゴリズムを表しています。

定数値説明
QGraphicsScene::BspTreeIndex0バイナリ空間分割木(BSP木)が適用されます。QGraphicsScene のすべてのアイテム位置決定アルゴリズムは、二分探索を利用することで、対数級近似の計算量を実現しています。アイテムの追加、移動、削除は対数時間で行われます。このアプローチは、静的なシーン(つまり、ほとんどのアイテムが移動しないシーン)に最適です。
QGraphicsScene::NoIndex-1インデックスは適用されません。シーン上のすべてのアイテムが検索されるため、アイテムの位置特定は線形時間複雑度となります。ただし、アイテムの追加、移動、削除は定数時間で実行されます。このアプローチは、多くのアイテムが継続的に追加、移動、または削除される動的なシーンに最適です。

setItemIndexMethod() およびbspTreeDepthも参照してください 。

enum QGraphicsScene::SceneLayer
flags QGraphicsScene::SceneLayers

この列挙型は、QGraphicsScene 内のレンダリングレイヤーを表します。QGraphicsScene がシーンの内容を描画する際、これらのレイヤーを順番に個別にレンダリングします。

各レイヤーは、invalidate() やQGraphicsView::invalidateScene() といった関数を呼び出す際に、OR演算で組み合わせることができるフラグを表しています。

定数値説明
QGraphicsScene::ItemLayer0x1アイテムレイヤー。QGraphicsScene は、仮想関数 drawItems() を呼び出すことで、このレイヤーにあるすべてのアイテムをレンダリングします。アイテムレイヤーは、背景レイヤーの後に、前景レイヤーの前に描画されます。
QGraphicsScene::BackgroundLayer0x2背景レイヤー。QGraphicsScene は、仮想関数drawBackground()を呼び出すことで、このレイヤーにシーンの背景を描画します。背景レイヤーは、すべてのレイヤーの中で最初に描画されます。
QGraphicsScene::ForegroundLayer0x4前景レイヤー。QGraphicsScene は、仮想関数 `drawForeground()` を呼び出すことで、シーンの前景をこのレイヤーに描画します。前景レイヤーは、すべてのレイヤーの中で最後に描画されます。
QGraphicsScene::AllLayers0xffffすべてのレイヤー。この値は、3つのレイヤーすべての組み合わせを表します。

SceneLayers 型は、QFlags<SceneLayer> の typedef です。SceneLayer 値の論理和(OR)を格納します。

invalidate() およびQGraphicsView::invalidateScene()も参照してください 。

プロパティのドキュメント

backgroundBrush : QBrush

このプロパティには、シーンの背景ブラシが格納されます。

このプロパティを設定することで、シーンの背景を別の色、グラデーション、またはテクスチャに変更できます。デフォルトの背景ブラシは `Qt::NoBrush` です。背景はアイテムよりも先に(後ろに)描画されます。

例:

QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();

// a blue background
scene.setBackgroundBrush(Qt::blue);

// a gradient background
QRadialGradient gradient(0, 0, 10);
gradient.setSpread(QGradient::RepeatSpread);
scene.setBackgroundBrush(gradient);

QGraphicsScene::render() は、drawBackground() を呼び出してシーンの背景を描画します。背景の描画方法をより詳細に制御するには、QGraphicsScene のサブクラスでdrawBackground() を再実装します。

アクセス関数:

QBrush backgroundBrush() const
void setBackgroundBrush(const QBrush &brush)

bspTreeDepth : int

このプロパティは、QGraphicsScene のBSPインデックスツリーの深さを保持します。

NoIndex を使用する場合、このプロパティは効果を持ちません。

この値は、QGraphicsScene のBSPツリーの深さを決定します。この深さは、QGraphicsScene のパフォーマンスとメモリ使用量に直接影響します。メモリ使用量は、ツリーの深さに比例して指数関数的に増加します。最適なツリー深さが設定されていれば、QGraphicsScene は、アイテムが数千や数百万あるシーンであっても、アイテムの局所性を瞬時に判定できます。これにより、レンダリング性能も大幅に向上します。

デフォルトでは、この値は 0 です。この場合、Qt はシーン内のアイテムのサイズ、位置、および数に基づいて、妥当なデフォルトの深さを推測します。ただし、これらのパラメータが頻繁に変化する場合、QGraphicsScene が内部で深さを再調整するため、処理が遅くなる可能性があります。このプロパティを設定してツリーの深さを固定することで、潜在的な処理遅延を回避できます。

ツリーの深さとシーン矩形のサイズによって、シーンの分割の粒度が決まります。各シーンセグメントのサイズは、以下のアルゴリズムによって決定されます:

QSizeF segmentSize = sceneRect().size() / pow(2, depth - 1);

BSPツリーは、各セグメントに含まれるオブジェクト数が0~10個の範囲にある場合に最適なサイズとなります。

アクセス関数:

int bspTreeDepth() const
void setBspTreeDepth(int depth)

itemIndexMethodも参照してください 。

focusOnTouch : bool

このプロパティは、アイテムがタッチ開始イベントを受信した際にフォーカスを獲得するかどうかを指定します。

通常の動作では、アイテムがクリックされた場合にのみフォーカスが移ります。多くの場合、タッチパッドでのタップはオペレーティングシステムによってマウスクリックと同等と解釈され、それに応じて合成クリックイベントが生成されます。ただし、少なくともmacOSでは、この動作を設定で変更することができます。

デフォルトでは、QGraphicsScene は、トラックパッドなどをタッチした際にもフォーカスを移行します。オペレーティングシステムが、トラックパッドのタップ時に合成マウスクリックを生成しないように設定されている場合、これは予期せぬ動作となります。オペレーティングシステムがトラックパッドのタップ時に合成マウスクリックを生成する場合、タッチジェスチャーの開始時のフォーカス移行は不要です。

focusOnTouchをオフにすると、QGraphicsScene はmacOS上で期待どおりの動作をします。

デフォルト値は `true` であり、これによりデフォルトの挙動が Qt 5.12 以前のバージョンと同様になります。タッチイベントによってフォーカスが変更されないようにするには、`false ` に設定してください。

アクセス関数:

bool focusOnTouch() const
void setFocusOnTouch(bool enabled)

font : QFont

このプロパティは、シーンのデフォルトフォントを保持します

このプロパティは、シーンのフォントを提供します。シーンのフォントはデフォルトで `QApplication::font` に設定されており、そのすべてのエントリはそこから取得されます。

シーンのフォントが、setFont() を通じて直接変更された場合、あるいはアプリケーションのフォントが変更された際に間接的に変更された場合、QGraphicsScene はまず自身に `FontChange ` イベントを送信し、その後、シーン内のすべてのトップレベルウィジェット項目に `FontChange ` イベントを送信します。 これらのアイテムは、シーンに対して自身のフォントを解決することで応答し、その後、子要素に通知します。子要素はさらにその子要素に通知し、すべてのウィジェットアイテムがフォントを更新するまで、このプロセスが繰り返されます。

シーンのフォントを変更すると(直接、あるいはQApplication::setFont() を通じて間接的に)、シーン全体の再描画が自動的にスケジュールされます。

関連関数:

QFont font() const
void setFont(const QFont &font)

関連項目: QWidget::font 、QApplication::setFont()、palette 、およびstyle()。

foregroundBrush : QBrush

このプロパティには、シーンの前景ブラシが格納されます。

このプロパティを変更すると、シーンの前景を別の色、グラデーション、またはテクスチャに設定できます。

前景は、各アイテムの描画後に(その上に)描画されます。デフォルトの前景ブラシはQt::NoBrush です(つまり、前景は描画されません)。

例:

QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();

// a white semi-transparent foreground
scene.setForegroundBrush(QColor(255, 255, 255, 127));

// a grid foreground
scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

QGraphicsScene::render() は、シーンの前景を描画するためにdrawForeground() を呼び出します。前景の描画方法をより詳細に制御するには、QGraphicsScene のサブクラス内でdrawForeground() 関数を再実装することができます。

アクセス関数:

QBrush foregroundBrush() const
void setForegroundBrush(const QBrush &brush)

itemIndexMethod : ItemIndexMethod

このプロパティには、アイテムのインデックス作成メソッドが格納されています。

QGraphicsScene シーンにインデックス作成アルゴリズムを適用し、items() やitemAt() といったアイテム検索関数の処理を高速化します。インデックス作成は、静的なシーン(つまり、アイテムが移動しないシーン)で最も効率的です。動的なシーンや、アニメーション化されたアイテムが多数含まれるシーンの場合、インデックスの管理コストが高速な検索速度を上回る可能性があります。

一般的なケースでは、デフォルトのインデックス作成メソッドであるBspTreeIndex で問題ありません。シーンで多くのアニメーションを使用しており、動作が遅いと感じる場合は、setItemIndexMethod(NoIndex) を呼び出すことでインデックス作成を無効にできます。

アクセス関数:

QGraphicsScene::ItemIndexMethod itemIndexMethod() const
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)

bspTreeDepthも参照してください 。

minimumRenderSize : qreal

このプロパティは、アイテムが描画されるために必要な、ビュー変換後の最小サイズを保持します。

シーンがレンダリングされる際、ターゲットビューに変換された幅または高さが `minimumRenderSize()` よりも小さいアイテムは、レンダリングされません。アイテムがレンダリングされず、そのアイテムが子アイテムをクリップしている場合、子アイテムもレンダリングされません。ズームアウトされたビューで多数のオブジェクトがレンダリングされるシーンの処理を高速化するには、この値を設定してください。

デフォルト値は 0 です。設定されていない場合、または 0 もしくは負の値に設定されている場合、すべてのアイテムは常にレンダリングされます。

たとえば、シーンが複数のビューによってレンダリングされ、そのうちの1つが常にすべてのアイテムを表示する概要ビューとして機能している場合、このプロパティを設定すると特に有用です。 アイテム数の多いシーンでは、すべてのアイテムを表示できるように、そのようなビューは高いスケーリング係数を使用します。このスケーリングにより、小さなアイテムは最終的にレンダリングされるシーンにほとんど寄与しなくなります。これらのアイテムの描画を回避し、シーンのレンダリングに必要な時間を短縮するには、setMinimumRenderSize() を非負の値で呼び出してください。

注: 小さすぎるために描画されないアイテムでも 、items() やitemAt() などのメソッドからは依然として返され、衝突検出や相互作用には関与します。インタラクティブでありながら描画されない大きなアイテムが発生するのを防ぐため、minimumRenderSize() を 1 以下の値に設定することをお勧めします。

アクセス関数:

qreal minimumRenderSize() const
void setMinimumRenderSize(qreal minSize)

QStyleOptionGraphicsItem::levelOfDetailFromTransform()も参照してください 。

palette : QPalette

このプロパティは、シーンのデフォルトのパレットを保持します

このプロパティは、シーンのパレットを提供します。シーンのパレットはデフォルトで `QApplication::palette` を参照し、そのすべてのエントリをそこから取得します。

シーンのパレットが、setPalette() によって直接変更された場合、あるいはアプリケーションのパレットが変更された際に間接的に変更された場合、QGraphicsScene はまず自身に `PaletteChange ` イベントを送信し、その後、シーン内のすべてのトップレベルウィジェットアイテムに `PaletteChange ` イベントを送信します。 これらのアイテムは、シーンに対して自身のパレットを解決することで応答し、その子要素に通知します。子要素はさらにその子要素に通知し、すべてのウィジェットアイテムがパレットを更新するまで、このプロセスが繰り返されます。

シーンのパレットを変更すると(直接、またはQApplication::setPalette()を介して間接的に)、シーン全体の再描画が自動的にスケジュールされます。

アクセス関数:

QPalette palette() const
void setPalette(const QPalette &palette)

関連項目: QWidget::palette 、QApplication::setPalette()、font 、およびstyle()。

sceneRect : QRectF

このプロパティは、シーンの長方形(シーンの境界矩形)を保持します

シーン矩形は、シーンの範囲を定義します。これは主に、QGraphicsView によってビューのデフォルトのスクロール可能領域を決定するために使用され、またQGraphicsScene によってアイテムのインデックス管理に使用されます。

設定されていない場合、またはQRectF がnullに設定されている場合、sceneRect()は、シーンの作成以降、シーン上のすべてのアイテムの最大のバウンディング矩形を返します(つまり、シーンにアイテムが追加されたり移動されたりすると拡大しますが、縮小することは決してない矩形です)。

アクセス関数:

QRectF sceneRect() const
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)

width()、height()、およびQGraphicsView::sceneRectも参照してください 。

stickyFocus : bool

このプロパティは、シーンの背景をクリックした際にフォーカスが解除されるかどうかを決定します

`QGraphicsScene ` で `stickyFocus` が `true` に設定されている場合、ユーザーがシーンの背景やフォーカスを受け付けないアイテムをクリックしても、フォーカスは変更されません。それ以外の場合は、フォーカスが解除されます。

デフォルトでは、このプロパティは `false` です。

フォーカスはマウスのクリックに応じて変化します。QGraphicsScene のサブクラスでmousePressEvent()を再実装することで、ユーザーがクリックした位置に基づいてこのプロパティを切り替えることができます。

アクセス関数:

bool stickyFocus() const
void setStickyFocus(bool enabled)

clearFocus() およびsetFocusItem()も参照してください 。

メンバ関数のドキュメント

QGraphicsScene::QGraphicsScene(QObject *parent = nullptr)

QGraphicsScene オブジェクトを生成します。parent パラメータは、QObject のコンストラクタに渡されます。

QGraphicsScene::QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)

sceneRect をシーン矩形として使用して、QGraphicsSceneオブジェクトを構築します。parent パラメータは、QObject のコンストラクタに渡されます。

sceneRectも参照してください 。

QGraphicsScene::QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)

(x,y) で指定された矩形を使用し、シーンの矩形として指定されたwidth およびheight を用いて、QGraphicsSceneオブジェクトを構築します。parent パラメータは、QObject のコンストラクタに渡されます。

sceneRectも参照してください 。

[virtual noexcept] QGraphicsScene::~QGraphicsScene()

シーンオブジェクトを破棄する前に、そのシーンオブジェクトからすべてのアイテムを取り除き、削除します。シーンオブジェクトは、アプリケーションのグローバルシーンリストから削除され、関連付けられているすべてのビューからも削除されます。

QGraphicsItem *QGraphicsScene::activePanel() const

現在アクティブなパネルを返します。現在アクティブなパネルがない場合は、nullptr を返します。

QGraphicsScene::setActivePanel()も参照してください 。

QGraphicsWidget *QGraphicsScene::activeWindow() const

現在アクティブなウィンドウを返します。現在アクティブなウィンドウがない場合は、nullptr を返します。

QGraphicsScene::setActiveWindow()も参照してください 。

QGraphicsEllipseItem *QGraphicsScene::addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

楕円アイテムを作成してシーンに追加し、そのアイテムポインタを返します。楕円のジオメトリは `rect` で定義され、ペンとブラシはそれぞれ `pen ` および `brush` に初期化されます。

なお、アイテムのジオメトリはアイテム座標で指定され、その位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、QGraphicsScene は、制御がイベントループに戻った時点でchanged() を発火します。

addLine()、addPath()、addPixmap()、addRect()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsEllipseItem *QGraphicsScene::addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

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

void QGraphicsScene::addItem(QGraphicsItem *item)

item とそのすべての子要素をこのシーンに追加または移動します。このシーンはitem の所有権を取得します。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible()がtrueを返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged()を発火します。

アイテムがすでに別のシーンにある場合、まず元のシーンから削除された後、トップレベルとしてこのシーンに追加されます。

QGraphicsScene は、アイテムがシーンに追加される際に、item に ItemSceneChange 通知を送信します。アイテムが現在どのシーンにも属していない場合は、1 件の通知のみが送信されます。すでにシーンに属している場合(つまり、このシーンに移動される場合)、QGraphicsScene は、アイテムが以前のシーンから削除される際に追加の通知を送信します。

アイテムがパネルであり、シーンがアクティブで、かつそのシーン内にアクティブなパネルが存在しない場合、そのアイテムはアクティブになります。

関連項目: removeItem()、addEllipse()、addLine()、addPath()、addPixmap()、addRect()、addText()、addWidget()、およびSorting 。

QGraphicsLineItem *QGraphicsScene::addLine(const QLineF &line, const QPen &pen = QPen())

シーンに線形アイテムを作成して追加し、そのアイテムのポインタを返します。線のジオメトリは `line` で定義され、ペンは `pen` に初期化されます。

なお、項目のジオメトリは項目座標で指定され、その位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible()がtrue を返す場合)、QGraphicsScene は、制御がイベントループに戻った時点でchanged()を発行します。

addEllipse()、addPath()、addPixmap()、addRect()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsLineItem *QGraphicsScene::addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())

この便利関数は、addLine(QLineF(x1,y1,x2,y2),pen) を呼び出すのと同じです。

QGraphicsPathItem *QGraphicsScene::addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())

パスアイテムを作成してシーンに追加し、そのアイテムポインタを返します。パスのジオメトリは `path` で定義され、ペンとブラシはそれぞれ `pen ` および `brush` に初期化されます。

なお、アイテムのジオメトリはアイテム座標系で指定され、その位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible()がtrue を返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged()を発火します。

addEllipse()、addLine()、addPixmap()、addRect()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsPixmapItem *QGraphicsScene::addPixmap(const QPixmap &pixmap)

ピクマップアイテムを作成してシーンに追加し、そのアイテムのポインタを返します。ピクマップは `pixmap` で定義されます。

なお、アイテムのジオメトリはアイテム座標で指定され、その位置は (0, 0) に初期化されることに注意してください。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible()がtrue を返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged()を発火します。

addEllipse()、addLine()、addPath()、addRect()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsPolygonItem *QGraphicsScene::addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())

ポリゴンアイテムを作成してシーンに追加し、そのアイテムポインタを返します。ポリゴンは `polygon` で定義され、そのペンとブラシは `pen ` および `brush` に初期化されます。

なお、アイテムのジオメトリはアイテム座標で指定され、その位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged() を発火します。

addEllipse()、addLine()、addPath()、addRect()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsRectItem *QGraphicsScene::addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

シーンに矩形アイテムを作成して追加し、そのアイテムポインタを返します。矩形のジオメトリは `rect` で定義され、そのペンとブラシはそれぞれ `pen ` および `brush` に初期化されます。

なお、アイテムのジオメトリはアイテム座標で指定され、その位置は (0, 0) に初期化されます。 たとえば、QRect(50, 50, 100, 100) が追加された場合、その左上隅は、アイテムの座標系における原点に対して (50, 50) になります。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged() を発行します。

addEllipse()、addLine()、addPixmap()、addText()、addItem()、およびaddWidget()も参照してください 。

QGraphicsRectItem *QGraphicsScene::addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

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

QGraphicsSimpleTextItem *QGraphicsScene::addSimpleText(const QString &text, const QFont &font = QFont())

QGraphicsSimpleTextItem を作成してシーンに追加し、そのアイテムポインタを返します。テキスト文字列は `text` に初期化され、そのフォントは `font` に初期化されます。

アイテムの位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、QGraphicsScene は、制御がイベントループに戻るとchanged() を発行します。

addEllipse()、addLine()、addPixmap()、addRect()、addItem()、およびaddWidget()も参照してください 。

QGraphicsTextItem *QGraphicsScene::addText(const QString &text, const QFont &font = QFont())

テキストアイテムを作成してシーンに追加し、そのアイテムのポインタを返します。テキスト文字列は `text` に初期化され、フォントは `font` に初期化されます。

アイテムの位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、制御がイベントループに戻ると、QGraphicsScene はchanged() を 1 回発行します。

addEllipse()、addLine()、addPixmap()、addRect()、addItem()、およびaddWidget()も参照してください 。

QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())

widget 用の新しいQGraphicsProxyWidget を作成し、それをシーンに追加して、そのプロキシへのポインタを返します。wFlags は、埋め込みプロキシウィジェットのデフォルトのウィンドウフラグを設定します。

アイテムの位置は (0, 0) に初期化されます。

アイテムが表示されている場合(つまり、QGraphicsItem::isVisible() がtrue を返す場合)、QGraphicsScene は、制御がイベントループに戻ると、changed() を 1 回発信します。

なお、`Qt::WA_PaintOnScreen ` ウィジェット属性が設定されているウィジェットや、外部アプリケーションやコントローラをラップするウィジェットはサポートされていません。例としては、QOpenGLWidget や QAxWidget が挙げられます。

addEllipse()、addLine()、addPixmap()、addRect()、addText()、addSimpleText()、およびaddItem()も参照してください 。

[slot] void QGraphicsScene::advance()

このスロットは、シーン上のすべてのアイテムに対して `QGraphicsItem::advance()` を呼び出すことで、シーンを 1 ステップ進めます。これは 2 つのフェーズに分けて行われます。第 1 フェーズでは、すべてのアイテムに対してシーンが変更されようとしていることが通知され、第 2 フェーズでは、すべてのアイテムに対して移動が可能になったことが通知されます。 第1フェーズでは、引数として0を指定してQGraphicsItem::advance()が呼び出され、第2フェーズでは1が渡されます。

なお、アニメーションにはAnimation Frameworkを使用することもできます。

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

[signal] void QGraphicsScene::changed(const QList<QRectF> &region)

このシグナルは、シーンの内容が変更された際に、制御がイベントループに到達した時点で、QGraphicsScene によって発火されます。region パラメータには、変更された領域を示すシーン矩形のリストが含まれています。

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

[slot] void QGraphicsScene::clear()

シーンからすべてのアイテムを取り除き、削除しますが、それ以外のシーンの状態は変更しません。

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

void QGraphicsScene::clearFocus()

シーンからフォーカスを解除します。この関数が呼び出された時点でいずれかのアイテムにフォーカスがある場合、そのアイテムはフォーカスを失いますが、シーンが再びフォーカスを獲得すると、そのアイテムも再びフォーカスを獲得します。

フォーカスを持っていないシーンは、キーイベントを無視します。

hasFocus()、setFocus()、およびsetFocusItem()も参照してください 。

[slot] void QGraphicsScene::clearSelection()

現在の選択範囲を解除します。

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

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

item と衝突するすべてのアイテムのリストを返します。衝突の判定はQGraphicsItem::collidesWithItem() を呼び出すことで行われ、衝突検出のロジックはmode で定義されています。デフォルトでは、item と形状が交差する、またはitem の形状内に含まれるすべてのアイテムが返されます。

アイテムは、スタック順の降順で返されます(つまり、リストの最初のアイテムが最上層のアイテムであり、最後のアイテムが最下層のアイテムとなります)。

items()、itemAt()、QGraphicsItem::collidesWithItem()、およびSortingも参照してください 。

[virtual protected] void QGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)

contextMenuEvent イベントに対するこのイベントハンドラは、サブクラスで再実装してコンテキストメニューイベントを受け取ることができます。デフォルトの実装では、イベントが発生した位置でコンテキストメニューイベントを受け付ける、最上位の表示中のアイテムにイベントを転送します。この位置でコンテキストメニューイベントを受け付けるアイテムがない場合、イベントは無視されます。

注:この関数によってどのアイテムが表示されているとみなされるかの定義については、items() を参照してください。

関連項目: QGraphicsItem::contextMenuEvent()。

QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *> &items)

items 内のすべてのアイテムを新しいQGraphicsItemGroup にグループ化し、そのグループへのポインタを返します。 グループは、items の共通の親を親として、位置(0, 0)で作成されます。すべてのアイテムはグループに再親付けされ、その位置と変形はグループにマッピングされます。items が空の場合、この関数は空の最上位QGraphicsItemGroup を返します。

QGraphicsScene グループ項目の所有権は本関数が保持しているため、削除する必要はありません。グループを解除するには、destroyItemGroup() を呼び出してください。

destroyItemGroup() およびQGraphicsItemGroup::addToGroup()も参照してください 。

void QGraphicsScene::destroyItemGroup(QGraphicsItemGroup *group)

group 内のすべてのアイテムをgroup の親アイテムに再配置し、その後group をシーンから削除し、最後にそれを破棄します。アイテムの位置と変形は、グループからその親グループへと引き継がれます。

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

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

このイベントハンドラ(event )は、サブクラスで再実装することで、シーンのドラッグ開始イベントを受け取ることができます。

デフォルトの実装では、イベントを受け入れ、シーンがドラッグ移動イベントを受け入れる準備を行います。

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

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

イベント `event` に対するこのイベントハンドラは、サブクラスで再実装することで、シーンのドラッグ離脱イベントを受け取ることができます。

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

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

このイベントハンドラ(event イベント用)は、サブクラスで再実装することで、シーンのドラッグ移動イベントを受け取ることができます。

注:この関数によってどのアイテムが表示されているとみなされるかについては、items() を参照してください。

関連項目: QGraphicsItem::dragMoveEvent()、dragEnterEvent()、dragLeaveEvent()、およびdropEvent()。

[virtual protected] void QGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)

アイテムや前景が描画される前に、painter を使用してシーンの背景を描画します。シーンにカスタム背景を設定するには、この関数を再実装してください。

すべての描画はシーン座標系で行われます。rect パラメータは、描画対象となる矩形を表します。

単に背景の色、テクスチャ、またはグラデーションを定義したいだけの場合は、代わりにsetBackgroundBrush()を呼び出すことができます。

drawForeground() およびdrawItems()も参照してください 。

[virtual protected] void QGraphicsScene::drawForeground(QPainter *painter, const QRectF &rect)

背景およびすべてのアイテムの描画が完了した後、painter を使用してシーンの前景を描画します。シーンにカスタムの前景を設定するには、この関数を再実装してください。

すべての描画はシーン座標系で行われます。rect パラメータは、描画対象となる矩形を表します。

前景の色、テクスチャ、またはグラデーションを定義するだけの場合、代わりにsetForegroundBrush()を呼び出すことができます。

drawBackground() およびdrawItems()も参照してください 。

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

イベント `event` に対するこのイベントハンドラは、サブクラスで再実装することで、シーンのドロップイベントを受け取ることができます。

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

[override virtual protected] bool QGraphicsScene::event(QEvent *event)

QObject::event(QEvent *e) を再実装します。

イベント `event` を処理し、それぞれのイベントハンドラにディスパッチします。

この関数は、利便性向上のためのイベントハンドラを呼び出すことに加え、マウスグラバーアイテムが存在しない場合に、マウスの移動イベントをホバーイベントに変換する役割も担っています。ホバーイベントはアイテムに直接配信され、これらに対する利便性向上のための関数は存在しません。

QWidget とは異なり、QGraphicsScene にはenterEvent()およびleaveEvent()といった便利関数がありません。代わりに、これらのイベントを取得するには本関数を使用してください。

event が認識され処理された場合はtrue を返し、そうでない場合はfalse を返します。

関連項目: contextMenuEvent()、keyPressEvent()、keyReleaseEvent()、mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、focusInEvent()、およびfocusOutEvent()も参照してください 。

[override virtual protected] bool QGraphicsScene::eventFilter(QObject *watched, QEvent *event)

QObject::eventFilter(QObject *watched, QEvent *event) を再実装します。

QGraphicsScene QApplication のイベントをフィルタリングし、パレットおよびフォントの変更を検出します。

[virtual protected] void QGraphicsScene::focusInEvent(QFocusEvent *focusEvent)

focusEvent イベント用のこのイベントハンドラは、サブクラスで再実装することで、イベント発生時にフォーカスを取得できるようにすることができます。

デフォルトの実装では、まずシーンにフォーカスを設定し、次に最後にフォーカスが当たっていた項目にフォーカスを設定します。

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

QGraphicsItem *QGraphicsScene::focusItem() const

シーンがアクティブな場合、この関数はシーンの現在のフォーカス対象アイテムを返します。現在フォーカスが当たっているアイテムがない場合は、nullptr を返します。シーンが非アクティブな場合、この関数は、シーンがアクティブになった際に入力フォーカスを獲得するアイテムを返します。

シーンがキーイベントを受信すると、フォーカス対象のアイテムがキーボード入力を受け取ります。

setFocusItem()、QGraphicsItem::hasFocus()、およびisActive()も参照してください 。

[signal] void QGraphicsScene::focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)

このシグナルは、シーン内でフォーカスが変化した際(つまり、アイテムが入力フォーカスを獲得または喪失したとき、あるいはフォーカスがあるアイテムから別のアイテムへ移ったとき)、QGraphicsScene によって発せられます。 他のアイテムが入力フォーカスを獲得したタイミングを追跡する必要がある場合は、このシグナルに接続できます。これは、仮想キーボード、入力メソッド、およびカーソルアイテムの実装に特に役立ちます。

oldFocusItem は、以前にフォーカスを持っていたアイテムへのポインタです。シグナルが発せられる前にフォーカスを持っていたアイテムがない場合は 0 になります。newFocusItem は、入力フォーカスを獲得したアイテムへのポインタです。フォーカスを失った場合はnullptr になります。reason は、フォーカス変更の理由です(例えば、入力フィールドがフォーカスを持っていた状態でのシーンの非アクティブ化の場合、oldFocusItem は入力フィールド項目を指し、newFocusItem はnullptr となり、reason はQt::ActiveWindowFocusReason となります)。

[virtual protected slot] bool QGraphicsScene::focusNextPrevChild(bool next)

TabキーおよびShift+Tabキーの操作に応じて、キーボードフォーカスを移す新しいウィジェットを検索し、新しいウィジェットが見つかった場合はtrue を、見つからなかった場合はfalseを返します。next がtrueの場合、この関数は前方へ検索を行い、next がfalseの場合は後方へ検索を行います。

QGraphicsScene のサブクラスでこの関数を再実装することで、シーン内でのタブフォーカスの移動方法をきめ細かく制御できます。デフォルトの実装は、QGraphicsWidget::setTabOrder() で定義されたタブフォーカスチェーンに基づいています。

[virtual protected] void QGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)

focusEvent イベントに対するこのイベントハンドラは、サブクラスで再実装することで、フォーカスアウトイベントを受け取ることができます。

デフォルトの実装では、すべてのフォーカス対象からフォーカスを解除し、その後、シーンからフォーカスを解除します。

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

bool QGraphicsScene::hasFocus() const

シーンにフォーカスがある場合は `true ` を返し、そうでない場合は `false` を返します。シーンにフォーカスがある場合、QKeyEvent からのキーイベントを、フォーカスを持つ任意のアイテムに転送します。

setFocus() およびsetFocusItem()も参照してください 。

qreal QGraphicsScene::height() const

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

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

[virtual protected] void QGraphicsScene::helpEvent(QGraphicsSceneHelpEvent *helpEvent)

helpEvent イベント用のこのイベントハンドラは、ヘルプイベントを受け取るためにサブクラスで再実装することができます。これらのイベントはQEvent::ToolTip 型であり、ツールチップが要求された際に生成されます。

デフォルトの実装では、マウスカーソルの位置にある、最前面に表示されているアイテム(つまり、z値が最も大きいアイテム)のツールチップを表示します。ツールチップが設定されているアイテムがない場合、この関数は何も行いません。

注:この関数によってどのアイテムが表示中と見なされるかの定義については、items() を参照してください。

関連項目: QGraphicsItem::toolTip() およびQGraphicsSceneHelpEvent 。

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

event イベントに対するこのイベントハンドラは、サブクラスで再実装することで、シーンに対する入力メソッドイベントを受け取ることができます。

デフォルトの実装では、イベントが `focusItem()` に転送されます。現在フォーカスされているアイテムがない場合、または現在のフォーカスアイテムが入力メソッドを受け付けない場合、この関数は何も行いません。

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

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

このメソッドは、入力メソッドによって、周囲のテキストの処理や再変換といった複雑な入力メソッド操作をサポートするために、シーンの一連のプロパティを照会するために使用されます。

query パラメータは、どのプロパティを問い合わせるかを指定します。

QWidget::inputMethodQuery()も参照してください 。

[slot] void QGraphicsScene::invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = AllLayers)

シーン上のrect にあるlayers を無効化し、再描画をスケジュールします。layers 内のキャッシュされたコンテンツは、無条件に無効化され、再描画されます。

この関数のオーバーロードを使用すると、シーンの背景または前景の変更をQGraphicsScene に通知できます。この関数は、QGraphicsView がCacheBackground を有効にしている場合に、変更を通知するために、タイルベースの背景を持つシーンで一般的に使用されます。

例:

QRectF TileScene::rectForTile(int x, int y) const
{
    // Return the rectangle for the tile at position (x, y).
    return QRectF(x * tileWidth, y * tileHeight, tileWidth, tileHeight);
}

void TileScene::setTile(int x, int y, const QPixmap &pixmap)
{
    // Sets or replaces the tile at position (x, y) with pixmap.
    if (x >= 0 && x < numTilesH && y >= 0 && y < numTilesV) {
        tiles[y][x] = pixmap;
        invalidate(rectForTile(x, y), BackgroundLayer);
    }
}

void TileScene::drawBackground(QPainter *painter, const QRectF &exposed)
{
    // Draws all tiles that intersect the exposed area.
    for (int y = 0; y < numTilesV; ++y) {
        for (int x = 0; x < numTilesH; ++x) {
            QRectF rect = rectForTile(x, y);
            if (exposed.intersects(rect))
                painter->drawPixmap(rect.topLeft(), tiles[y][x]);
        }
    }
}

なお、QGraphicsView は現在、背景のキャッシュのみをサポートしています(QGraphicsView::CacheBackground を参照)。BackgroundLayer 以外のレイヤーが渡された場合、この関数はupdate()を呼び出すのと同じ効果があります。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        graphicsScene, qOverload(&QGraphicsScene::invalidate));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        graphicsScene, [receiver = graphicsScene](const QRectF &rect, QGraphicsScene::SceneLayers layers) { receiver->invalidate(rect, layers); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

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

void QGraphicsScene::invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)

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

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

bool QGraphicsScene::isActive() const

シーンがアクティブな場合(たとえば、アクティブなQGraphicsView が少なくとも1つそのシーンを表示している場合)、true を返します。それ以外の場合は、false を返します。

QGraphicsItem::isActive() およびQWidget::isActiveWindow()も参照してください 。

QGraphicsItem *QGraphicsScene::itemAt(const QPointF &position, const QTransform &deviceTransform) const

指定されたposition にある、表示されている最上位のアイテムを返します。この位置にアイテムがない場合は、nullptr を返します。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

注:この関数によってどのアイテムが表示されているとみなされるかについては、items() を参照してください。

関連項目: items()、collidingItems()、およびSorting 。

QGraphicsItem *QGraphicsScene::itemAt(qreal x, qreal y, const QTransform &deviceTransform) const

(x 、y) で指定された位置にある、表示されている最上位のアイテムを返します。この位置にアイテムがない場合は、nullptr を返します。

deviceTransform はビューに適用されるトランスフォームであり、シーンに変換を無視するアイテムが含まれている場合は指定する必要があります。

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

注:この関数によってどのアイテムが表示されるとみなされるかについては、items() を参照してください。

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

QList<QGraphicsItem *> QGraphicsScene::items(Qt::SortOrder order = Qt::DescendingOrder) const

シーン上のすべてのアイテムの順序付きリストを返します。積み重ね順序は、order によって決定されます。

addItem()、removeItem()、およびSortingも参照してください 。

QList<QGraphicsItem *> QGraphicsScene::items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

mode の設定に応じて、指定されたpos にあるすべての表示中のアイテムを、order を使用してソートされたリストとして返します。この場合、「表示中」とは、isVisible() がtrue を返し、effectiveOpacity() が 0.0(完全に透明)より大きい値を返し、かつ親アイテムによってクリップされていないアイテムを指します。

mode のデフォルト値はQt::IntersectsItemShape です。pos と正確な形状が交差するすべてのアイテムが返されます。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

itemAt() およびSortingも参照してください 。

QList<QGraphicsItem *> QGraphicsScene::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

mode の設定に応じて、指定されたpath の内部にあるか、またはそれと交差するすべての可視アイテムを、order を使用してソートされたリストとして返します。この場合、「可視」とは、isVisible() がtrue を返し、effectiveOpacity() が 0.0(完全に透明)より大きい値を返し、かつ親アイテムによってクリップされていないアイテムを指します。

mode のデフォルト値はQt::IntersectsItemShape です。path と正確な形状が交差するか、または に含まれるすべてのアイテムが返されます。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

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

itemAt() およびSortingも参照してください 。

QList<QGraphicsItem *> QGraphicsScene::items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

mode の設定に基づき、指定されたpolygon の内部にあるか、またはそれと交差するすべての可視アイテムを、order を使用してソートされたリストとして返します。この場合、「可視」とは、isVisible() がtrue を返し、effectiveOpacity() が 0.0(完全に透明)より大きい値を返し、かつ親アイテムによってクリップされていないアイテムを指します。

mode のデフォルト値はQt::IntersectsItemShape です。polygon と正確な形状が交差するか、または に含まれるすべてのアイテムが返されます。

deviceTransform はビューに適用される変形であり、シーンに変形を無視するアイテムが含まれている場合は、これを指定する必要があります。

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

itemAt() およびSortingも参照してください 。

QList<QGraphicsItem *> QGraphicsScene::items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

mode の設定に応じて、指定されたrect の内部にあるか、またはそれと交差するすべての可視アイテムを、order を使用してソートされたリストとして返します。この場合、「可視」とは、isVisible() がtrue を返し、effectiveOpacity() が 0.0(完全に透明)より大きい値を返し、かつ親アイテムによってクリップされていないアイテムを指します。

mode のデフォルト値はQt::IntersectsItemShape です。rect と正確な形状が交差するか、またはその中に含まれるすべてのアイテムが返されます。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

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

itemAt() およびSortingも参照してください 。

QList<QGraphicsItem *> QGraphicsScene::items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const

mode の設定に基づき、x 、y 、w 、h で定義された矩形の内側にあるか、またはその矩形と交差する、すべての表示中のアイテムを、order を使用してソートされたリストとして返します。 この場合、「visible」とは、isVisible() がtrue を返し、effectiveOpacity() が 0.0(完全に透明)より大きい値を返し、かつ親アイテムによってクリッピングされていないアイテムを指します。

deviceTransform これはビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

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

QRectF QGraphicsScene::itemsBoundingRect() const

シーン上のすべてのアイテムのバウンディングボックスを計算して返します。この関数はすべてのアイテムを順に処理するため、シーンが大きい場合は処理に時間がかかる場合があります。

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

[virtual protected] void QGraphicsScene::keyPressEvent(QKeyEvent *keyEvent)

イベントkeyEvent 用のこのイベントハンドラは、サブクラスで再実装することで、キー押下イベントを受け取ることができます。デフォルトの実装では、イベントが現在のフォーカス対象アイテムに転送されます。

QGraphicsItem::keyPressEvent() およびfocusItem()も参照してください 。

[virtual protected] void QGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent)

イベントkeyEvent に対するこのイベントハンドラは、キーの離しイベントを受け取るためにサブクラスで再実装することができます。デフォルトの実装では、イベントが現在のフォーカス対象に転送されます。

QGraphicsItem::keyReleaseEvent() およびfocusItem()も参照してください 。

[virtual protected] void QGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)

このイベントハンドラ(mouseEvent )は、サブクラスで再実装することで、シーンに対するマウスのダブルクリックイベントを受け取ることができます。

誰かがシーンをダブルクリックすると、シーンはまずマウス押下イベントを受け取り、次にリリースイベント(つまりクリック)を受け取り、続いてダブルクリックイベントを受け取り、最後にリリースイベントを受け取ります。 ダブルクリックイベントが、最初の押下および離しイベントを受け取ったアイテムとは異なるアイテムに配信された場合、そのイベントは押下イベントとして配信されます。ただし、この場合、トリプルクリックイベントはダブルクリックイベントとして配信されません。

デフォルトの実装は、mousePressEvent() に似ています。

注:この関数によってどのアイテムが表示されているとみなされるかの定義については、items() を参照してください。

関連項目: QGraphicsItem::mousePressEvent()、QGraphicsItem::mouseMoveEvent()、QGraphicsItem::mouseReleaseEvent()、およびQGraphicsItem::setAcceptedMouseButtons()。

QGraphicsItem *QGraphicsScene::mouseGrabberItem() const

現在のマウスグラバーアイテムを返します。現在、マウスをグラブしているアイテムがない場合は、nullptr を返します。マウスグラバーアイテムとは、シーンに送信されるすべてのマウスイベントを受け取るアイテムのことです。

アイテムは、マウス押下イベントを受信して受理するとマウスグラバーとなり、以下のいずれかのイベントが発生するまでマウスグラバーのままとなります:

  • 他のボタンが押されていない状態で、そのアイテムがマウスリリースイベントを受信すると、マウスのグラブ状態を解除します。
  • アイテムが非表示になった場合(つまり、item->setVisible(false) が呼び出された場合)、または無効化された場合(つまり、item->setEnabled(false) が呼び出された場合)、マウスのグラブ状態は解除されます。
  • アイテムがシーンから削除されると、マウスのグラブを失います。

アイテムがマウスのグラブを失った場合、新しいアイテムがマウスをグラブする(つまり、新しいアイテムがマウス押下イベントを受信する)まで、シーンはすべてのマウスイベントを無視します。

[virtual protected] void QGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)

mouseEvent イベント用のこのイベントハンドラは、サブクラスで再実装することで、シーンのマウス移動イベントを受け取ることができます。

デフォルトの実装は、マウスグラバーの状態に依存します。マウスグラバーアイテムが存在する場合、イベントはマウスグラバーに送信されます。現在の位置にホバーイベントを受け付けるアイテムが存在する場合は、イベントはホバーイベントに変換されて受け付けられます。そうでない場合は無視されます。

QGraphicsItem::mousePressEvent()、QGraphicsItem::mouseReleaseEvent()、QGraphicsItem::mouseDoubleClickEvent()、およびQGraphicsItem::setAcceptedMouseButtons()も参照してください 。

[virtual protected] void QGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)

mouseEvent イベント用のこのイベントハンドラは、サブクラスで再実装することで、シーンのマウス押下イベントを受け取ることができます。

デフォルトの実装は、シーンの状態によって異なります。マウスのグラバーとなるアイテムが存在する場合、イベントはマウスのグラバーに送信されます。そうでない場合は、イベントのシーン上の位置でマウスイベントを受け付ける、最も上層にある表示中のアイテムにイベントが転送され、そのアイテムが直ちにマウスのグラバーとなります。

シーン上の指定された位置にアイテムが存在しない場合、選択領域はリセットされ、フォーカスを持つアイテムは入力フォーカスを失い、イベントは無視されます。

注:この関数によってどのアイテムが表示中とみなされるかについては、items() を参照してください。

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

[virtual protected] void QGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)

このイベントハンドラ(mouseEvent )は、サブクラスで再実装することで、シーンのマウス離しイベントを受け取ることができます。

デフォルトの実装は、マウスグラバーの状態に依存します。マウスグラバーが存在しない場合、このイベントは無視されます。一方、マウスグラバーアイテムが存在する場合、このイベントはマウスグラバーに送信されます。このマウス離しイベントが、マウスで最後に押されていたボタンを表す場合、マウスグラバーアイテムはマウスのグラブ状態を解除します。

QGraphicsItem::mousePressEvent()、QGraphicsItem::mouseMoveEvent()、QGraphicsItem::mouseDoubleClickEvent()、およびQGraphicsItem::setAcceptedMouseButtons()も参照してください 。

void QGraphicsScene::removeItem(QGraphicsItem *item)

item アイテムとそのすべての子要素をシーンから削除します。item の所有権は呼び出し元に引き継がれます(つまり、QGraphicsScene が破棄されても、item は削除されなくなります)。

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

void QGraphicsScene::render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)

シーン内のsource 矩形を、painter を使用してtarget にレンダリングします。この関数は、シーンの内容をQImage などのペイントデバイスにキャプチャする場合(例:スクリーンショットの取得)や、QPrinterを使用して印刷する場合に役立ちます。例:

QGraphicsScene scene;
scene.addItem(someItem);
//...
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPageSize::A4);

QPainter painter(&printer);
scene.render(&painter);

source がnullの矩形の場合、この関数はsceneRect()を使用して、何をレンダリングするかを決定します。target がnullの矩形の場合、painter のペイントデバイスの寸法が使用されます。

ソース矩形の内容は、aspectRatioMode に基づいて変換され、ターゲット矩形に収まるように調整されます。デフォルトでは、アスペクト比が維持され、source はtarget に収まるようにスケーリングされます。

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

[signal] void QGraphicsScene::sceneRectChanged(const QRectF &rect)

このシグナルは、シーンの矩形が変更されるたびに `QGraphicsScene ` によって発火されます。`rect ` パラメータは、新しいシーンの矩形を表します。

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

QList<QGraphicsItem *> QGraphicsScene::selectedItems() const

現在選択されているすべての項目のリストを返します。項目の順序は特定されません。

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

QPainterPath QGraphicsScene::selectionArea() const

setSelectionArea() で以前に設定された選択領域を返します。選択領域が設定されていない場合は、空の `QPainterPath ` を返します。

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

[signal] void QGraphicsScene::selectionChanged()

このシグナルは、選択状態が変更されるたびに `QGraphicsScene ` によって発火します。selectedItems() を呼び出すことで、選択された項目の新しいリストを取得できます。

選択状態は、アイテムが選択または選択解除されたとき、選択領域が設定、クリア、またはその他の方法で変更されたとき、事前に選択されたアイテムがシーンに追加されたとき、あるいは選択されたアイテムがシーンから削除されたときに変化します。

QGraphicsScene グループ選択操作の場合、このシグナルは一度だけ発火します。たとえば、選択領域を設定したり、QGraphicsItemGroup を選択または選択解除したり、あるいは複数の選択済みアイテムを含む親アイテムをシーンに追加または削除したりした場合、selectionChanged() は操作が完了した後に一度だけ発火します(アイテムごとに一度ずつ発火するわけではありません)。

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

bool QGraphicsScene::sendEvent(QGraphicsItem *item, QEvent *event)

イベント「event 」を、適用可能なイベントフィルターを通じて、項目「item 」に送信します。

このイベントは、アイテムが有効な場合にのみ送信されます。

イベントがフィルタリングされた場合、またはアイテムが無効になっている場合は、false を返します。それ以外の場合は、イベントハンドラから返された値を返します。

QGraphicsItem::sceneEvent() およびQGraphicsItem::sceneEventFilter()も参照してください 。

void QGraphicsScene::setActivePanel(QGraphicsItem *item)

item をアクティブにします。 は、このシーン内のアイテムである必要があります。また、item に 0 を指定することも可能です。その場合、QGraphicsScene は現在アクティブなパネルをすべて非アクティブにします。

シーンが現在非アクティブな場合、item はシーンがアクティブになるまで非アクティブなままとなります(ただし、item がnullptr である場合は、どのアイテムもアクティブになりません)。

activePanel()、isActive()、およびQGraphicsItem::isActive()も参照してください 。

void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)

widget を有効にします。これは、このシーン内のウィジェットである必要があります。また、widget に 0 を指定することも可能です。その場合、QGraphicsScene は現在アクティブなウィンドウをすべて非アクティブにします。

activeWindow() およびQGraphicsWidget::isActiveWindow()も参照してください 。

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

シーンにQFocusEvent を送信し、理由としてfocusReason を指定することで、そのシーンにフォーカスを設定します。アイテムにフォーカスが当たっている間にシーンがフォーカスを失い、その後再びフォーカスを取り戻した場合、最後にフォーカスがあったアイテムが、理由としてfocusReason を指定してフォーカスを受け取ります。

シーンがすでにフォーカスを持っている場合、この関数は何もしません。

hasFocus()、clearFocus()、およびsetFocusItem()も参照してください 。

void QGraphicsScene::setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)

シーンのフォーカス対象をitem に設定し、フォーカス理由をfocusReason とします。その際、以前にフォーカスが当てられていた可能性のある項目からフォーカスを解除します。

item がnullptr である場合、またはフォーカスを受け付けない(つまり、QGraphicsItem::ItemIsFocusable フラグが有効になっていない)、あるいは表示されていない、または有効になっていない場合、この関数は以前のフォーカスアイテムからフォーカスを解除するのみです。

item がnullptr ではなく、かつシーンが現在フォーカスを持っていない場合(すなわち、hasFocus() がfalse を返す場合)、この関数は自動的にsetFocus() を呼び出します。

focusItem()、hasFocus()、およびsetFocus()も参照してください 。

void QGraphicsScene::setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)

選択領域をpath に設定します。この領域内のすべてのアイテムは即座に選択され、領域外のすべてのアイテムは選択解除されます。selectedItems()を呼び出すことで、選択されたすべてのアイテムのリストを取得できます。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

アイテムを選択するには、そのアイテムが選択可能(QGraphicsItem::ItemIsSelectable )としてマークされている必要があります。

clearSelection() およびselectionArea()も参照してください 。

void QGraphicsScene::setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())

選択領域を `path ` に設定し、mode を使用して、各アイテムが選択領域に含まれるかどうかを判断します。

deviceTransform はビューに適用される変換であり、シーンに変換を無視するアイテムが含まれている場合は、これを指定する必要があります。

selectionOperation は、現在選択されているアイテムに対してどのような処理を行うかを決定します。

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

clearSelection() およびselectionArea()も参照してください 。

void QGraphicsScene::setStyle(QStyle *style)

シーンのスタイルをstyle に設定または置き換え、そのスタイルをこのシーンに再紐付けします。以前に割り当てられていたスタイルはすべて削除されます。シーンのスタイルはデフォルトでQApplication::style()となり、シーン内のすべてのQGraphicsWidget アイテムのデフォルトとして機能します。

この関数を直接呼び出すか、QApplication::setStyle() を間接的に呼び出すかによってスタイルを変更すると、スタイルが明示的に割り当てられていないシーン内のすべてのウィジェットのスタイルが自動的に更新されます。

style がnullptr の場合、QGraphicsScene はQApplication::style()に戻ります。

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

QStyle *QGraphicsScene::style() const

シーンのスタイルを返します。シーンに明示的にスタイルが割り当てられていない場合は、QApplication::style() と同じ結果を返します。

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

[slot] void QGraphicsScene::update(const QRectF &rect = QRectF())

シーン内の領域rect の再描画をスケジュールします。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        graphicsScene, qOverload(&QGraphicsScene::update));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        graphicsScene, [receiver = graphicsScene](const QRectF &rect) { receiver->update(rect); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

sceneRect() およびchanged()も参照してください 。

void QGraphicsScene::update(qreal x, qreal y, qreal w, qreal h)

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

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

QList<QGraphicsView *> QGraphicsScene::views() const

このシーンを表示するすべてのビューのリストを返します。

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

[virtual protected] void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

wheelEvent イベント用のこのイベントハンドラは、サブクラスで再実装することで、シーンのマウスホイールイベントを受け取ることができます。

デフォルトでは、このイベントはカーソルの下にある最上層の可視アイテムに配信されます。無視された場合、イベントは下にあるアイテムへと伝播し、イベントが受け入れられるか、シーンに到達するまでこの処理が繰り返されます。イベントを受け入れるアイテムがない場合、イベントは無視されます。

注:この関数によってどのアイテムが表示中とみなされるかについては、items() を参照してください。

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

qreal QGraphicsScene::width() const

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

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

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.