QGraphicsView Class
QGraphicsView クラスは、QGraphicsScene の内容を表示するためのウィジェットを提供します。詳細...
| ヘッダー: | #include <QGraphicsView> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QAbstractScrollArea |
パブリック型
| flags | CacheMode |
| enum | CacheModeFlag { CacheNone, CacheBackground } |
| enum | DragMode { NoDrag, ScrollHandDrag, RubberBandDrag } |
| enum | OptimizationFlag { DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting } |
| flags | OptimizationFlags |
| enum | ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse } |
| enum | ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate } |
プロパティ
|
|
パブリック関数
| QGraphicsView(QWidget *parent = nullptr) | |
| QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr) | |
| virtual | ~QGraphicsView() |
| Qt::Alignment | alignment() const |
| QBrush | backgroundBrush() const |
| QGraphicsView::CacheMode | cacheMode() const |
| void | centerOn(const QPointF &pos) |
| void | centerOn(const QGraphicsItem *item) |
| void | centerOn(qreal x, qreal y) |
| QGraphicsView::DragMode | dragMode() const |
| void | ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50) |
| void | fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| QBrush | foregroundBrush() const |
| bool | isInteractive() const |
| bool | isTransformed() const |
| QGraphicsItem * | itemAt(const QPoint &pos) const |
| QGraphicsItem * | itemAt(int x, int y) const |
| QList<QGraphicsItem *> | items() const |
| QList<QGraphicsItem *> | items(const QPoint &pos) const |
| QList<QGraphicsItem *> | items(int x, int y) const |
| QList<QGraphicsItem *> | items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPoint | mapFromScene(const QPointF &point) const |
| QPolygon | mapFromScene(const QPolygonF &polygon) const |
| QPolygon | mapFromScene(const QRectF &rect) const |
| QPoint | mapFromScene(qreal x, qreal y) const |
| QPolygon | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(const QPoint &point) const |
| QPolygonF | mapToScene(const QPolygon &polygon) const |
| QPolygonF | mapToScene(const QRect &rect) const |
| QPointF | mapToScene(int x, int y) const |
| QPolygonF | mapToScene(int x, int y, int w, int h) const |
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio) |
| QPainter::RenderHints | renderHints() const |
| void | resetCachedContent() |
| void | resetTransform() |
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | rotate(qreal angle) |
| QRect | rubberBandRect() const |
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | scale(qreal sx, qreal sy) |
| QGraphicsScene * | scene() const |
| QRectF | sceneRect() const |
| void | setAlignment(Qt::Alignment alignment) |
| void | setBackgroundBrush(const QBrush &brush) |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
| void | setDragMode(QGraphicsView::DragMode mode) |
| void | setForegroundBrush(const QBrush &brush) |
| void | setInteractive(bool allowed) |
| void | setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true) |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
| void | setRenderHint(QPainter::RenderHint hint, bool enabled = true) |
| void | setRenderHints(QPainter::RenderHints hints) |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
| void | setScene(QGraphicsScene *scene) |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
| void | setTransform(const QTransform &matrix, bool combine = false) |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
| void | shear(qreal sh, qreal sv) |
| QTransform | transform() const |
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | translate(qreal dx, qreal dy) |
| QTransform | viewportTransform() const |
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
再実装されたパブリック関数
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const override |
| virtual QSize | sizeHint() const override |
パブリックスロット
| void | invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers) |
| void | updateScene(const QList<QRectF> &rects) |
| void | updateSceneRect(const QRectF &rect) |
シグナル
| void | rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint) |
protected関数
| virtual void | drawBackground(QPainter *painter, const QRectF &rect) |
| virtual void | drawForeground(QPainter *painter, const QRectF &rect) |
再実装された保護関数
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual void | dragEnterEvent(QDragEnterEvent *event) override |
| virtual void | dragLeaveEvent(QDragLeaveEvent *event) override |
| virtual void | dragMoveEvent(QDragMoveEvent *event) override |
| virtual void | dropEvent(QDropEvent *event) override |
| virtual bool | event(QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *event) override |
| virtual bool | focusNextPrevChild(bool next) override |
| virtual void | focusOutEvent(QFocusEvent *event) override |
| virtual void | inputMethodEvent(QInputMethodEvent *event) override |
| virtual void | keyPressEvent(QKeyEvent *event) override |
| virtual void | keyReleaseEvent(QKeyEvent *event) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) override |
| virtual void | mouseMoveEvent(QMouseEvent *event) override |
| virtual void | mousePressEvent(QMouseEvent *event) override |
| virtual void | mouseReleaseEvent(QMouseEvent *event) override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual void | showEvent(QShowEvent *event) override |
| virtual bool | viewportEvent(QEvent *event) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
再実装されたプロテクトされたスロット
| virtual void | setupViewport(QWidget *widget) override |
詳細な説明
QGraphicsView は、QGraphicsScene の内容をスクロール可能なビューポートに表示します。幾何学的要素を含むシーンを作成するには、QGraphicsScene のドキュメントを参照してください。QGraphicsView はGraphics View Framework の一部です。
シーンを可視化するには、まずQGraphicsViewオブジェクトを構築し、可視化したいシーンのアドレスをQGraphicsViewのコンストラクタに渡します。あるいは、後でsetScene()を呼び出してシーンを設定することもできます。show() を呼び出すと、ビューはデフォルトでシーンの中央にスクロールし、その時点で表示可能なアイテムを表示します。例えば:
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();スクロールバーを使用するか、centerOn() を呼び出すことで、シーン上の任意の位置に明示的にスクロールさせることができます。centerOn() に座標を指定すると、QGraphicsView はその座標がビューの中心に来るようにビューポートをスクロールさせます。QGraphicsItem へのスクロール用のオーバーロードも用意されており、この場合、QGraphicsViewはアイテムの中心がビューの中央に来るように調整します。特定の領域が表示されるようにしたいだけであり(必ずしも中央に配置する必要がない場合)、代わりにensureVisible()を呼び出すことができます。
QGraphicsView を使用すると、シーン全体またはその一部のみを表示することができます。表示領域は、デフォルトではビューが最初に表示される際(QGraphicsScene::itemsBoundingRect() を呼び出すことで)自動的に検出されます。表示領域の矩形を手動で設定するには、setSceneRect() を呼び出します。これにより、スクロールバーの範囲が適切に調整されます。 なお、シーンは事実上無制限のサイズをサポートしていますが、スクロールバーの範囲は整数(INT_MIN、INT_MAX)の範囲を超えることはありません。
QGraphicsView は、render() を呼び出すことでシーンを可視化します。デフォルトでは、アイテムは通常のQPainter を使用し、デフォルトのレンダリングヒントを用いてビューポート上に描画されます。QGraphicsView がアイテムの描画時にQPainter に渡すデフォルトのレンダリングヒントを変更するには、setRenderHints() を呼び出します。
デフォルトでは、QGraphicsView はビューポートウィジェットとして通常のQWidget を提供します。このウィジェットにはviewport() を呼び出すことでアクセスできますが、setViewport() を呼び出すことで置き換えることも可能です。OpenGL を使用してレンダリングするには、単に setViewport(newQOpenGLWidget) を呼び出してください。QGraphicsView はビューポートウィジェットの所有権を取得します。
QGraphicsView は、QTransform を使用してアフィン変換をサポートしています。setTransform() に関数行列を渡すか、またはrotate()、scale()、translate()、shear() といった便利関数のいずれかを呼び出すことができます。最も一般的な変換は、ズームの実装に使用されるスケーリングと、回転の 2 つです。 QGraphicsView は、変形処理中もビューの中心を固定したままにします。シーンの整列 (setAlignment()) が行われているため、ビューを平行移動しても視覚的な影響は生じません。
マウスやキーボードを使用して、シーン上のアイテムと対話することができます。QGraphicsView は、マウスやキーのイベントをシーンイベント(QGraphicsSceneEvent を継承するイベント)に変換し、それらを可視化されたシーンに転送します。最終的には、個々のアイテムがイベントを処理し、それに反応します。 たとえば、選択可能なアイテムをクリックすると、通常、そのアイテムはシーンに対して自身が選択されたことを通知するとともに、選択矩形を表示するために自身を再描画します。同様に、マウスをクリックしてドラッグして移動可能なアイテムを移動させる場合も、マウスの動きを処理し、自身を移動させるのはそのアイテムです。 アイテムとの相互作用はデフォルトで有効になっており、setInteractive() を呼び出すことでオン/オフを切り替えることができます。
また、QGraphicsViewのサブクラスを作成し、マウスおよびキーイベントハンドラを再実装することで、独自のシーンインタラクションを実装することもできます。 ビュー内のアイテムとのプログラムによる操作を簡略化するために、QGraphicsView はマッピング関数 `mapToScene()` および `mapFromScene()`、ならびにアイテムアクセサ `items()` および `itemAt()` を提供しています。これらの関数を使用すると、ビュー座標とシーン座標の間で点、矩形、多角形、パスをマッピングしたり、ビュー座標を使用してシーン上のアイテムを検索したりすることができます。
QOpenGLWidget をビューポートとして使用する場合、立体レンダリングがサポートされます。これは、QOpenGLWidget::paintGL と同じパターンで実現されます。これを有効にするには、QSurfaceFormat::StereoBuffers フラグを有効にしてください。このフラグの内部的な処理の都合上、QSurfaceFormat::setDefaultFormat()を使用してウィンドウを作成する前に、QSurfaceFormat::StereoBuffers フラグをグローバルに設定する必要があります。 このフラグが有効で、かつステレオレンダリングのハードウェアサポートがある場合、drawBackground() およびdrawForeground() は各フレームごとに 2 回ずつ呼び出されます。現在どのバッファに描画が行われているかを確認するには、QOpenGLWidget::currentTargetBuffer() を呼び出してください。

注: OpenGLビューポートを使用すると 、QGraphicsProxyWidget の使用に制限が生じます。このような設定では、ウィジェットとスタイルのすべての組み合わせがサポートされるとは限りません。UI を慎重にテストし、必要な調整を行う必要があります。
関連項目: QGraphicsScene 、QGraphicsItem 、およびQGraphicsSceneEvent 。
メンバタイプのドキュメント
enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode
この列挙型は、QGraphicsView のキャッシュモードに対して設定可能なフラグを表します。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsView::CacheNone | 0x0 | すべての描画はビューポート上で直接行われます。 |
QGraphicsView::CacheBackground | 0x1 | 背景がキャッシュされます。これは、カスタム背景と、backgroundBrush プロパティに基づく背景の両方に影響します。このフラグが有効になっている場合、QGraphicsView は、ビューポートのフルサイズを持つ 1 つのピクマップを割り当てます。 |
CacheMode 型は、QFlags<CacheModeFlag> の typedef です。これは、CacheModeFlag 値の論理和(OR)を格納します。
cacheModeも参照してください 。
enum QGraphicsView::DragMode
この列挙型は、ビューポート上でマウスを押したままドラッグした際の、ビューのデフォルトの動作を定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsView::NoDrag | 0 | 何も起こらず、マウスイベントは無視されます。 |
QGraphicsView::ScrollHandDrag | 1 | カーソルが指し示す手の形に変わり、マウスをドラッグするとスクロールバーがスクロールします。このモードは、interactive モードと非インタラクティブモードの両方で機能します。 |
QGraphicsView::RubberBandDrag | 2 | ラバーバンドが表示されます。マウスをドラッグするとラバーバンドの形状が設定され、ラバーバンドで覆われたすべての項目が選択されます。このモードは、非対話型ビューでは無効になります。 |
関連項目: dragMode およびQGraphicsScene::setSelectionArea()。
enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags
この列挙型は、QGraphicsView での描画パフォーマンスを向上させるために有効にできるフラグを定義しています。デフォルトでは、これらのフラグはいずれも設定されていません。フラグを設定すると通常、何らかの副作用が生じ、その影響はペイントデバイスやプラットフォームによって異なる場合があることに注意してください。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsView::DontSavePainterState | 0x1 | レンダリング時、QGraphicsView は、背景や前景のレンダリング時、および各アイテムのレンダリング時に、ペインターの状態を保護します(QPainter::save()を参照)。これにより、ペインターを変更後の状態のままにしておくことができます(つまり、描画後に状態を復元することなく、QPainter::setPen()やQPainter::setBrush()を呼び出すことができます)。 ただし、アイテム側が常に状態を復元する場合は、QGraphicsView が同様の処理を行わないようにするため、このフラグを有効にする必要があります。 |
QGraphicsView::DontAdjustForAntialiasing | 0x2 | QGraphicsView による、露出領域のアンチエイリアシングの自動調整を無効にします。QGraphicsItem::boundingRect() の境界でアンチエイリアシングされた線をレンダリングするアイテムでは、線の一部が境界の外側にレンダリングされてしまうことがあります。レンダリング上のアーティファクトを防ぐため、QGraphicsView はすべての露出領域を全方向に 2 ピクセルずつ拡張します。 このフラグを有効にすると、QGraphicsView はこれらの調整を行わなくなり、再描画が必要な領域が最小限に抑えられるため、パフォーマンスが向上します。一般的な副作用として、アンチエイリアシングを使用して描画するアイテムは、移動時にシーン上に描画の痕跡が残ることがあります。 |
QGraphicsView::IndirectPainting | 0x4 | Qt 4.6 以降、QGraphicsView::drawItems() および QGraphicsScene::drawItems() を呼び出す従来の描画アルゴリズムを復元します。古いコードとの互換性のためにのみ使用してください。 |
OptimizationFlags 型は、QFlags<OptimizationFlag> の typedef です。これは、OptimizationFlag 値の論理和(OR)の組み合わせを格納します。
enum QGraphicsView::ViewportAnchor
この列挙型は、ユーザーがビューのサイズを変更したとき、またはビューが変形された際に、QGraphicsView が使用可能なアンカーを表します。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsView::NoAnchor | 0 | アンカーなし。つまり、ビューはシーン内の位置を変更しません。 |
QGraphicsView::AnchorViewCenter | 1 | ビューの中心にあるシーンポイントがアンカーとして使用されます。 |
QGraphicsView::AnchorUnderMouse | 2 | マウスの位置がアンカーとして使用されます。 |
resizeAnchor およびtransformationAnchorも参照してください 。
enum QGraphicsView::ViewportUpdateMode
この列挙型は、シーンの内容が変更されたり公開されたりした際に、QGraphicsView がビューポートをどのように更新するかを定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QGraphicsView::FullViewportUpdate | 0 | シーンの表示領域が変更されたり、再公開されたりすると、QGraphicsView はビューポート全体を更新します。このアプローチは、QGraphicsView が描画に費やす時間よりも、何を描画するかを判断するのに費やす時間の方が長い場合(たとえば、非常に多くの小さなアイテムが繰り返し更新される場合など)に最も高速です。 これは、QOpenGLWidget など、部分的な更新をサポートしていないビューポートや、スクロール最適化を無効にする必要があるビューポートに推奨される更新モードです。 |
QGraphicsView::MinimalViewportUpdate | 1 | QGraphicsView は、再描画が必要なビューポート領域を最小限に特定し、変更されていない領域の再描画を回避することで、描画に費やす時間を最小限に抑えます。これはQGraphicsView のデフォルトモードです。一般的にこのアプローチは最高のパフォーマンスを発揮しますが、シーン上に目に見える小さな変更が多数ある場合、QGraphicsView は描画に費やす時間よりも、最小限の領域を特定するのに多くの時間を費やす結果になる可能性があります。 |
QGraphicsView::SmartViewportUpdate | 2 | QGraphicsView は、再描画が必要な領域を分析することで、最適な更新モードを見つけようとします。 |
QGraphicsView::BoundingRectViewportUpdate | 4 | ビューポート内のすべての変更箇所の境界矩形が再描画されます。このモードの利点は、QGraphicsView が変更の有無を調べる領域を 1 つに限定できるため、再描画が必要な箇所を特定するのにかかる時間を最小限に抑えられることです。欠点は、変更されていない領域も再描画する必要があることです。 |
QGraphicsView::NoViewportUpdate | 3 | QGraphicsView シーンが変更されても、ビューポートは決して更新されません。すべての更新はユーザーが制御することが想定されています。このモードでは、QGraphicsView における(処理に時間がかかる可能性のある)アイテムの可視性チェックがすべて無効化され、固定フレームレートが必要なシーンや、ビューポートが外部で更新されるシーンに適しています。 |
viewportUpdateModeも参照してください 。
プロパティのドキュメント
alignment : Qt::Alignment
このプロパティは、シーン全体が表示されているときの、ビュー内でのシーンの配置を保持します。
ビュー内でシーン全体が表示されている場合(つまり、スクロールバーが表示されていない場合)、ビューの配置設定によって、シーンがビュー内のどこにレンダリングされるかが決まります。 たとえば、アライメントがデフォルトの `Qt::AlignCenter` の場合、シーンはビューの中央に配置され、アライメントが `(Qt::AlignLeft |Qt::AlignTop)` の場合、シーンはビューの左上隅にレンダリングされます。
アクセス関数:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment alignment) |
backgroundBrush : QBrush
このプロパティには、シーンの背景ブラシが格納されます。
このプロパティは、このビュー内のシーンの背景ブラシを設定します。これはシーン自身の背景を上書きするために使用され、drawBackground() の動作を定義します。このビューにカスタムな背景描画を実装するには、代わりにdrawBackground() を再実装することができます。
デフォルトでは、このプロパティにはQt::NoBrush パターンを持つブラシが格納されています。
アクセス関数:
| QBrush | backgroundBrush() const |
| void | setBackgroundBrush(const QBrush &brush) |
関連項目: ` QGraphicsScene::backgroundBrush ` および `foregroundBrush`。
cacheMode : CacheMode
このプロパティは、ビューのどの部分がキャッシュされているかを保持します
QGraphicsView は、事前にレンダリングされたコンテンツをQPixmap にキャッシュし、それをビューポート上に描画することができます。このようなキャッシュの目的は、レンダリングに時間がかかる領域の総レンダリング時間を短縮することにあります。 たとえば、テクスチャ、グラデーション、アルファブレンディングされた背景などは、特に変形されたビューの場合、レンダリングに著しく時間がかかることがあります。CacheBackground フラグを有効にすると、ビューの背景のキャッシュが可能になります。例:
QGraphicsView view;
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"));
view.setCacheMode(QGraphicsView::CacheBackground);キャッシュは、ビューがトランスフォームされるたびに無効化されます。ただし、スクロール時には、部分的な無効化のみで済みます。
デフォルトでは、何もキャッシュされません。
アクセス関数:
| QGraphicsView::CacheMode | cacheMode() const |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
resetCachedContent() およびQPixmapCacheも参照してください 。
dragMode : DragMode
このプロパティは、マウスの左ボタンを押したままシーン上でマウスをドラッグした際の挙動を指定します。
このプロパティは、ユーザーがシーンの背景をクリックしてマウスをドラッグした際にどのような動作を行うかを定義します(例:ポインティングハンドカーソルを使用してビューポートの内容をスクロールしたり、ラバーバンドで複数のアイテムを選択したり)。デフォルト値の `NoDrag` は、何も実行しません。
この動作は、どのアイテムによっても処理されていないマウスクリックにのみ影響します。QGraphicsView のサブクラスを作成し、mouseMoveEvent()を再実装することで、カスタム動作を定義できます。
アクセス関数:
| QGraphicsView::DragMode | dragMode() const |
| void | setDragMode(QGraphicsView::DragMode mode) |
foregroundBrush : QBrush
このプロパティは、シーンのフォアグラウンドブラシを保持します。
このプロパティは、このビュー内のシーンのフォアグラウンドブラシを設定します。これは、シーン自身のフォアグラウンドを上書きするために使用され、drawForeground() の動作を定義します。このビューでカスタムのフォアグラウンド描画を行うには、代わりにdrawForeground() を再実装することができます。
デフォルトでは、このプロパティにはQt::NoBrush パターンを持つブラシが格納されています。
アクセス関数:
| QBrush | foregroundBrush() const |
| void | setForegroundBrush(const QBrush &brush) |
関連項目: ` QGraphicsScene::foregroundBrush ` および `backgroundBrush`。
interactive : bool
このプロパティは、ビューでシーンとの相互作用を許可するかどうかを指定します。
有効に設定されている場合、このビューはシーンとの相互作用を許可するように設定されます。そうでない場合、このビューは相互作用を許可せず、マウスやキーのイベントはすべて無視されます(つまり、読み取り専用ビューとして動作します)。
デフォルトでは、このプロパティはtrue に設定されています。
アクセス関数:
| bool | isInteractive() const |
| void | setInteractive(bool allowed) |
optimizationFlags : OptimizationFlags
QGraphicsView のパフォーマンスを調整するために使用できるフラグ。
QGraphicsView xml-ph-0000@deepl.internalは、一般的なグラフィックスシーンにおけるレンダリング品質とパフォーマンスを向上させるために、クリッピング、バウンディング矩形の追加調整、およびその他の補助機能を使用しています。ただし、ターゲットプラットフォーム、シーン、および使用中のビューポートによっては、これらの操作の一部がパフォーマンスを低下させる場合があります。
その影響はフラグごとに異なります。詳細については、OptimizationFlags のドキュメントを参照してください。
デフォルトでは、最適化フラグは有効になっていません。
アクセス関数:
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
setOptimizationFlag()も参照してください 。
renderHints : QPainter::RenderHints
このプロパティには、ビューのデフォルトのレンダリングヒントが格納されます
これらのヒントは、各表示対象アイテムが描画される前に、QPainter を初期化するために使用されます。QPainter は、アンチエイリアシングやピクマップ変換の滑らかな処理といったレンダリング機能をオン/オフするために、レンダリングヒントを使用します。
QPainter::TextAntialiasing はデフォルトで有効になっています。
例:
QGraphicsScene scene;
scene.addRect(QRectF(-10, -10, 20, 20));
QGraphicsView view(&scene);
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.show();関数へのアクセス:
| QPainter::RenderHints | renderHints() const |
| void | setRenderHints(QPainter::RenderHints hints) |
resizeAnchor : ViewportAnchor
ビューのサイズが変更された際に、ビューがシーンをどのように配置すべきかを指定します。
QGraphicsView ビューポートウィジェットのサイズが変更された際、ビューポート内でのシーンの配置方法を決定するためにこのプロパティを使用します。デフォルトの挙動である `NoAnchor` では、サイズ変更中もシーンの位置は変更されません。サイズ変更中は、ビューの左上隅が固定されているように見えます。
なお、このプロパティの効果は、シーンの一部しか表示されていない場合(つまり、スクロールバーが表示されている場合)に顕著になります。それ以外の場合、つまりシーン全体がビューに収まっている場合は、QGraphicsScene はビューの配置設定に基づいてシーンをビュー内に配置します。
アクセス関数:
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
関連項目: alignmentおよびtransformationAnchor 。
rubberBandSelectionMode : Qt::ItemSelectionMode
このプロパティは、ラバーバンド選択矩形を使用して項目を選択する際の動作を指定します。
このプロパティは、「RubberBandDrag 」ドラッグモードを使用する際の項目の選択方法を定義します。
デフォルト値は「Qt::IntersectsItemShape 」です。ラバーバンドと形状が交差する、またはラバーバンド内に含まれるすべてのアイテムが選択されます。
アクセス関数:
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
関連項目: dragMode 、items()、およびrubberBandRect()。
sceneRect : QRectF
このプロパティには、このビューによって可視化されるシーンの領域が格納されます。
シーン矩形はシーンの範囲を定義しており、ビューの場合、これはスクロールバーを使用して移動できるシーンの領域を意味します。
設定されていない場合、または null の `QRectF ` が設定されている場合、このプロパティは `QGraphicsScene::sceneRect` と同じ値を持ち、QGraphicsScene::sceneRect によって変化します。それ以外の場合、ビューのシーン矩形はシーンの影響を受けません。
なお、シーンは事実上無制限のサイズをサポートしていますが、スクロールバーの範囲は整数の範囲(INT_MIN、INT_MAX)を超えることはありません。シーンがスクロールバーの値よりも大きい場合は、代わりにtranslate() を使用してシーンを操作することができます。
デフォルトでは、このプロパティには、原点に位置し、幅と高さがゼロの矩形が含まれます。
アクセス関数:
| QRectF | sceneRect() const |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
QGraphicsScene::sceneRectも参照してください 。
transformationAnchor : ViewportAnchor
変換時にビューがシーンをどのように配置すべきか。
QGraphicsView ビューは、このプロパティを使用して、変換行列が変更され、ビューの座標系が変換された際に、ビューポート内でシーンをどのように配置するかを決定します。デフォルトの挙動である `AnchorViewCenter` では、変換中(例えば、回転時など)に、ビューの中心にあるシーンの点が変化しないように保証されます(つまり、シーンはビューの中心を軸に回転しているように見えます)。
なお、このプロパティの効果は、シーンの一部しか表示されていない場合(つまり、スクロールバーが表示されている場合)に顕著になります。それ以外の場合、つまりシーン全体がビューに収まっている場合は、QGraphicsScene はビューのアライメントを使用してシーンをビュー内に配置します。
アクセス関数:
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
関連項目: alignmentおよびresizeAnchor 。
viewportUpdateMode : ViewportUpdateMode
ビューポートがコンテンツをどのように更新すべきか。
QGraphicsView このプロパティを使用して、再表示されたり変更されたりしたシーンの領域をどのように更新するかを決定します。通常、このプロパティを変更する必要はありませんが、変更することでレンダリングパフォーマンスが向上する場合もあります。具体的な詳細については、『ViewportUpdateMode 』のドキュメントを参照してください。
デフォルト値は `MinimalViewportUpdate` です。このうち、`QGraphicsView ` を指定すると、コンテンツが変更された際にビューポートの更新範囲を可能な限り小さくします。
アクセス関数:
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
「 ViewportUpdateMode 」および「cacheMode 」も参照してください 。
メンバ関数のドキュメント
QGraphicsView::QGraphicsView(QWidget *parent = nullptr)
QGraphicsView を作成します。parent がQWidget のコンストラクタに渡されます。
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
QGraphicsView を作成し、表示されるシーンを `scene` に設定します。`parent ` は、QWidget のコンストラクタに渡されます。
[virtual noexcept] QGraphicsView::~QGraphicsView()
QGraphicsView オブジェクトを破棄します。
void QGraphicsView::centerOn(const QPointF &pos)
ビューポート内のコンテンツをスクロールし、シーン座標 `pos` がビューの中央にくるようにします。
pos は浮動小数点座標であるのに対し、スクロールバーは整数座標で動作するため、中央揃えはあくまで近似値となります。
注: アイテムが境界線に近いか、境界線の外側にある場合 、そのアイテムはビュー内に表示されますが、中央には配置されません。
ensureVisible()も参照してください 。
void QGraphicsView::centerOn(const QGraphicsItem *item)
ビューポート内のコンテンツをスクロールし、item がビューの中央に配置されるようにします。
これはオーバーロードされた関数です。
ensureVisible()も参照してください 。
void QGraphicsView::centerOn(qreal x, qreal y)
この関数は利便性のために提供されています。これは、centerOn(QPointF(x,y)) を呼び出すのと同じです。
これはオーバーロードされた関数です。
[override virtual protected] void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)
QAbstractScrollArea::contextMenuEvent (QContextMenuEvent *e)を再実装します。
[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)
QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event) を再実装します。
[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event) を再実装します。
[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event) を再実装します。
[virtual protected] void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
アイテムや前景が描画される前に、painter を使用してシーンの背景を描画します。このビューにカスタム背景を設定するには、この関数を再実装してください。
単に背景の色、テクスチャ、またはグラデーションを定義したいだけの場合は、代わりにsetBackgroundBrush()を呼び出すことができます。
すべての描画はシーン座標系で行われます。rect は、描画対象となる矩形です。
デフォルトの実装では、ビューのbackgroundBrush を使用してrect を塗りつぶします。そのようなブラシが定義されていない場合(デフォルト)、代わりにシーンのdrawBackground()関数が呼び出されます。
drawForeground() およびQGraphicsScene::drawBackground()も参照してください 。
[virtual protected] void QGraphicsView::drawForeground(QPainter *painter, const QRectF &rect)
背景およびすべてのアイテムの描画が完了した後、painter を使用してシーンの前景を描画します。このビューに独自の前景を設定するには、この関数を再実装してください。
単に前景の色、テクスチャ、またはグラデーションを定義したいだけの場合は、代わりに `setForegroundBrush()` を呼び出すことができます。
すべての描画はシーン座標系で行われます。rect は、描画対象となる矩形です。
デフォルトの実装では、ビューの `foregroundBrush` を使用して `rect ` を塗りつぶします。そのようなブラシが定義されていない場合(デフォルト)、代わりにシーンの `drawForeground()` 関数が呼び出されます。
drawBackground() およびQGraphicsScene::drawForeground()も参照してください 。
[override virtual protected] void QGraphicsView::dropEvent(QDropEvent *event)
QAbstractScrollArea::dropEvent (QDropEvent *event)を再実装します。
void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
ビューポートの内容をスクロールし、シーン矩形 `rect ` が表示されるようにします。余白は `xmargin ` および `ymargin` でピクセル単位で指定されます。指定された矩形に到達できない場合、内容は最も近い有効な位置までスクロールされます。両方の余白のデフォルト値は 50 ピクセルです。
centerOn()も参照してください 。
void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
ビューポートの内容をスクロールし、アイテムitem の中心が表示されるようにします。マージンは、xmargin およびymargin でピクセル単位で指定されます。指定された位置に到達できない場合、内容は最も近い有効な位置までスクロールされます。両方のマージンのデフォルト値は 50 ピクセルです。
これはオーバーロードされた関数です。
centerOn()も参照してください 。
void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
この関数は利便性のために用意されています。これは、ensureVisible(QRectF(x,y,w,h),xmargin,ymargin)を呼び出すのと同じです。
これはオーバーロードされた関数です。
[override virtual protected] bool QGraphicsView::event(QEvent *event)
QAbstractScrollArea::event(QEvent *event) を再実装します。
void QGraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
ビュー行列をスケーリングし、スクロールバーをスクロールして、シーン矩形rect がビューポート内に収まるようにします。rect はシーン矩形の内側にある必要があります。そうでない場合、fitInView() では矩形全体が表示されることを保証できません。
この関数は、ビューの回転、並進、またはせん断を維持します。ビューはaspectRatioMode に基づいて拡大縮小されます。rect がビューにぴったり収まらない場合、ビューの中央に配置されます。
ビューのサイズ変更に伴い、シーン全体またはその一部がビューポートの新しいサイズに合わせて自動的にスケーリングされるようにするため、resizeEvent()の再実装内部からfitInView()を呼び出すのが一般的です。 ただし、resizeEvent() 内で fitInView() を呼び出すと、新しいトランスフォーメーションによってスクロールバーの自動表示状態が切り替わる場合、意図しないリサイズ再帰が発生する可能性があることに注意してください。これを防ぐには、スクロールバーのポリシーを「常にオン」または「常にオフ」に切り替えることができます(horizontalScrollBarPolicy() およびverticalScrollBarPolicy() を参照してください)。
rect が空の場合、またはビューポートが小さすぎる場合、この関数は何も実行しません。
setTransform()、ensureVisible()、およびcenterOn()も参照してください 。
void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
item がビュー内にぴったり収まるようにし、aspectRatioMode に従ってビューをスケーリングします。
これはオーバーロードされた関数です。
ensureVisible() およびcenterOn()も参照してください 。
void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
この便利関数は、fitInView(QRectF(x,y,w,h),aspectRatioMode) を呼び出すのと同じです。
これはオーバーロードされた関数です。
ensureVisible() およびcenterOn()も参照してください 。
[override virtual protected] void QGraphicsView::focusInEvent(QFocusEvent *event)
QWidget::focusInEvent(QFocusEvent *event) を再実装します。
[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)
QWidget::focusNextPrevChild (bool next)を再実装します。
[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)
QWidget::focusOutEvent(QFocusEvent *event) を再実装します。
[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
QWidget::inputMethodEvent(QInputMethodEvent *event) を再実装しています。
[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
QWidget::inputMethodQuery (const Qt::InputMethodQuery query)を再実装します。
[slot] void QGraphicsView::invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)
rect 内で、layers を無効化し、再描画をスケジュールします。rect はシーン座標系で指定されます。rect 内のlayers に関するキャッシュされたコンテンツは、無条件に無効化され、再描画されます。
この関数を呼び出すことで、シーンの背景または前景の変更をQGraphicsView に通知できます。これは、QGraphicsView で背景キャッシュが有効になっている場合、タイルベースの背景を持つシーンにおいて変更を通知するために一般的に使用されます。
なお、QGraphicsView は現在、背景キャッシュのみをサポートしています(QGraphicsView::CacheBackground を参照)。QGraphicsScene::BackgroundLayer 以外のレイヤーが渡された場合、この関数はupdate()を呼び出すのと同じ効果があります。
QGraphicsScene::invalidate() およびupdate()も参照してください 。
bool QGraphicsView::isTransformed() const
ビューが変換されている場合(つまり、非恒等変換が割り当てられているか、スクロールバーが調整されている場合)、true を返します。
setTransform()、horizontalScrollBar)、およびverticalScrollBar()も参照してください 。
QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const
ビューポート座標でpos の位置にあるアイテムを返します。この位置に複数のアイテムが存在する場合、この関数は最上層のアイテムを返します。
例:
voidCustomView::mousePressEvent(QMouseEvent*event)
{
if(QGraphicsItem*item =itemAt(event->pos())) {
qDebug() << "You clicked on item" << item;
}else{
qDebug("You didn't click on an item.");
}
}QGraphicsItem *QGraphicsView::itemAt(int x, int y) const
この関数は利便性を考慮して提供されています。これは、itemAt(QPoint(x,y)) を呼び出すのと同じです。
これはオーバーロードされた関数です。
QList<QGraphicsItem *> QGraphicsView::items() const
関連するシーン内のすべてのアイテムを、スタック順の降順でリストとして返します(つまり、返されるリストの最初のアイテムが最上層のアイテムとなります)。
QGraphicsScene::items() およびSortingも参照してください 。
QList<QGraphicsItem *> QGraphicsView::items(const QPoint &pos) const
ビュー内の位置 `pos ` にあるすべてのアイテムのリストを返します。アイテムはスタッキング順の降順でリストされます(つまり、リストの最初のアイテムが最上部のアイテム、最後のアイテムが最下部のアイテムとなります)。`pos ` はビューポート座標です。
この関数は、QGraphicsView のサブクラス内のマウスイベントハンドラから呼び出されることが最も一般的です。pos は、QMouseEvent::position() と同様に、変換前のビューポート座標で指定されます。
voidCustomView::mousePressEvent(QMouseEvent*event)
{
qDebug() << "There are" << items(event->pos()).size()
<< "位置にあるアイテム" <<mapToScene(event->pos());
}QGraphicsScene::items() およびSortingも参照してください 。
QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const
この関数は利便性のために提供されています。これは、items(QPoint(x,y)) を呼び出すのと同じです。
QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
この便利な関数は、items(QRectF(x,y,w,h),mode) を呼び出すのと同じです。
QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
mode に基づいて、path に含まれるか、または と共通部分を持つすべての項目のリストを返します。path はビューポート座標系で表されます。
mode のデフォルト値はQt::IntersectsItemShape です。path と正確な形状が交差するか、または に含まれるすべてのアイテムが返されます。
これはオーバーロードされた関数です。
itemAt()、items()、mapToScene()、およびSortingも参照してください 。
QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
mode に基づいて、polygon に含まれる、または と交差するすべての項目のリストを返します。polygon はビューポート座標で表されます。
mode のデフォルト値はQt::IntersectsItemShape です。polygon と正確な形状が交差するか、または に含まれるすべてのアイテムが返されます。
アイテムは、スタック順の降順でソートされます(つまり、返されるリストの最初のアイテムが最上部のアイテムとなります)。
これはオーバーロードされた関数です。
itemAt()、items()、mapToScene()、およびSortingも参照してください 。
QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
mode に基づいて、rect に含まれるか、または と共通部分を持つすべての項目のリストを返します。rect はビューポート座標で表されます。
mode のデフォルト値はQt::IntersectsItemShape です。rect と正確な形状が交差するか、または に含まれるすべてのアイテムが返されます。
アイテムは、スタック順が降順でソートされます(つまり、返されるリストの最初のアイテムが最上部のアイテムになります)。
これはオーバーロードされた関数です。
itemAt()、items()、mapToScene()、およびSortingも参照してください 。
[override virtual protected] void QGraphicsView::keyPressEvent(QKeyEvent *event)
QAbstractScrollArea::keyPressEvent(QKeyEvent *e) の再実装です。
[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
QWidget::keyReleaseEvent(QKeyEvent *event) を再実装します。
QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const
シーン座標系のペインターパス `path ` を、ビューポート座標系のペインターパスに変換します。
mapToScene()も参照してください 。
QPoint QGraphicsView::mapFromScene(const QPointF &point) const
シーン座標point をビューポート座標に変換して返します。
mapToScene()も参照してください 。
QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
シーン座標のポリゴン `polygon ` をビューポート座標のポリゴンに変換します。
mapToScene()も参照してください 。
QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const
シーンの矩形rect を、ビューポート座標のポリゴンに変換して返します。
mapToScene()も参照してください 。
QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const
この関数は利便性を考慮して提供されています。これは、mapFromScene(QPointF(x,y)) を呼び出すのと同じです。
QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
この関数は利便性を考慮して提供されています。これは、mapFromScene(QRectF(x,y,w,h)) を呼び出すのと同じです。
QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const
ビューポートのペインターパス `path ` を、シーン座標系のペインターパスにマッピングしたものを返します。
mapFromScene()も参照してください 。
QPointF QGraphicsView::mapToScene(const QPoint &point) const
point のビューポート座標を、シーン座標にマッピングした結果を返します。
注:point にあるピクセル自体ではなく、そのピクセルが覆う矩形全体をシーン座標に変換すると便利な場合があります。これを行うには、mapToScene(QRect(point,QSize(2, 2))) を呼び出します。
mapFromScene()も参照してください 。
QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
シーン座標のポリゴンにマッピングされたビューポートのポリゴン `polygon ` を返します。
mapFromScene()も参照してください 。
QPolygonF QGraphicsView::mapToScene(const QRect &rect) const
シーン座標のポリゴンにマッピングされたビューポート矩形 `rect ` を返します。
mapFromScene()も参照してください 。
QPointF QGraphicsView::mapToScene(int x, int y) const
この関数は利便性を考慮して提供されています。これは、mapToScene(QPoint(x,y)) を呼び出すのと同じです。
QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const
この関数は利便性を考慮して提供されています。これは、mapToScene(QRect(x,y,w,h)) を呼び出すのと同じです。
[override virtual protected] void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)
QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e) を再実装します。
[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e) を再実装します。
[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)
QAbstractScrollArea::mousePressEvent(QMouseEvent *e) の再実装。
[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e) を再実装します。
[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)
QAbstractScrollArea::paintEvent(QPaintEvent *event) を再実装します。
void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
シーン内のビュー座標系にあるsource 矩形を、painter を使用して、ペイントデバイス座標系であるtarget に変換します。この関数は、ビューの内容をQImage などのペイントデバイスにキャプチャする場合(例:スクリーンショットの取得)や、QPrinterへの出力に役立ちます。例:
QGraphicsScene scene;
scene.addItem(someItem);
//...
QGraphicsView view(&scene);
view.show();
//...
QPrinter printer(QPrinter::HighResolution);
printer.setDocName("Example");
QPainter painter(&printer);
// print, fitting the viewport contents into a full page
view.render(&painter);
// print the upper half of the viewport into the lower.
// half of the page.
QRect viewport = view.viewport()->rect();
view.render(&painter,
QRectF(0, printer.height() / 2,
printer.width(), printer.height() / 2),
viewport.adjusted(0, 0, 0, -viewport.height() / 2));source がnull rectの場合、この関数はviewport()->rect()を使用して、何を描画するかを決定します。target がnull rectの場合、painter のペイントデバイスの全寸法(例:QPrinterの場合はページサイズ)が使用されます。
ソース矩形の内容は、aspectRatioMode に従って変換され、ターゲット矩形に収まるように調整されます。デフォルトでは、アスペクト比が維持され、source はtarget に収まるようにスケーリングされます。
QGraphicsScene::render()も参照してください 。
void QGraphicsView::resetCachedContent()
キャッシュされたコンテンツをすべてリセットします。この関数を呼び出すと、QGraphicsView のキャッシュがクリアされます。現在のキャッシュモードがCacheNone の場合、この関数は何も行いません。
この関数は、backgroundBrush またはQGraphicsScene::backgroundBrush プロパティが変更された際に自動的に呼び出されます。QGraphicsScene::drawBackground() またはQGraphicsView::drawBackground() を再実装してカスタム背景を描画し、完全な再描画をトリガーする必要がある場合にのみ、この関数を呼び出す必要があります。
cacheMode()も参照してください 。
void QGraphicsView::resetTransform()
ビュー変換を単位行列にリセットします。
transform() およびsetTransform()も参照してください 。
[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)
QAbstractScrollArea::resizeEvent(QResizeEvent *event) を再実装します。
void QGraphicsView::rotate(qreal angle)
現在のビュー変換をangle 度、時計回りに回転させます。
setTransform()、transform()、scale()、shear()、およびtranslate()も参照してください 。
[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
このシグナルは、ゴムバンドの矩形が変更されたときに発火します。ビューポートの矩形は、rubberBandRect で指定されます。ドラッグ開始位置とドラッグ終了位置は、fromScenePoint およびtoScenePoint によってシーン座標で指定されます。
ラバーバンド選択が終了すると、このシグナルはnull値で発火します。
rubberBandRect()も参照してください 。
QRect QGraphicsView::rubberBandRect() const
この関数は、ユーザーが現在ラバーバンドを使用してアイテムを選択している場合、現在のラバーバンド領域(ビューポート座標系)を返します。ユーザーがラバーバンドを使用していない場合、この関数は(null の)QRectF() を返します。
このQRect の一部は、視覚的なビューポートの外側にある場合があることに注意してください。例えば、負の値が含まれることがあります。
rubberBandSelectionMode およびrubberBandChanged()も参照してください 。
void QGraphicsView::scale(qreal sx, qreal sy)
現在のビュー変換を (sx,sy) によってスケーリングします。
setTransform()、transform()、rotate()、shear()、およびtranslate()も参照してください 。
QGraphicsScene *QGraphicsView::scene() const
ビューに現在表示されているシーンへのポインタを返します。現在表示されているシーンがない場合は、nullptr が返されます。
setScene()も参照してください 。
[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)
QAbstractScrollArea::scrollContentsBy(int dx, int dy) を再実装します。
void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
enabled がtrueの場合、flag を有効にします。それ以外の場合は、flag を無効にします。
optimizationFlagsも参照してください 。
void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)
enabled が true の場合、hint のレンダリングヒントが有効になります。そうでない場合は無効になります。
「renderHints」も参照してください 。
void QGraphicsView::setScene(QGraphicsScene *scene)
現在のシーンを「scene 」に設定します。すでに「scene 」が表示されている場合、この関数は何も行いません。
ビューにシーンが設定されると、QGraphicsScene::changed() シグナルは自動的にこのビューのupdateScene() スロットに接続され、ビューのスクロールバーはシーンのサイズに合わせて調整されます。
ビューは `scene` の所有権を取得しません。
scene()も参照してください 。
void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)
ビューの現在の変換行列をmatrix に設定します。
combine がtrueの場合、matrix は現在の行列と合成されます。そうでない場合、matrix が現在の行列に置き換えられます。combine はデフォルトでfalseです。
変換行列は、シーンをビュー座標系に変換します。単位行列によって提供されるデフォルトの変換を使用すると、ビュー上の 1 ピクセルはシーン上の 1 単位を表します(たとえば、10x10 の長方形のアイテムは、ビュー上で 10x10 ピクセルを使用して描画されます)。 2x2のスケーリング行列が適用されると、シーンは1:2の比率で描画されます(例:10x10の矩形オブジェクトは、ビュー内で20x20ピクセルを使って描画されます)。
例:
QGraphicsScene scene;
scene.addText("GraphicsView rotated clockwise");
QGraphicsView view(&scene);
view.rotate(90); // the text is rendered with a 90 degree clockwise rotation
view.show();変換されたビューを使用したオブジェクトとのやり取りを簡略化するため、QGraphicsView では、シーン座標とビュー座標の間を変換できる mapTo... および mapFrom... 関数が提供されています。たとえば、mapToScene() を呼び出すと、ビュー座標を浮動小数点数のシーン座標にマッピングでき、mapFromScene() を呼び出すと、浮動小数点数のシーン座標をビュー座標にマッピングできます。
関連項目: transform()、resetTransform()、rotate()、scale()、shear()、およびtranslate()。
[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)
QAbstractScrollArea::setupViewport(QWidget *viewport) を再実装します。
このスロットは、setViewport() が呼び出された後に、QAbstractScrollArea によって呼び出されます。QGraphicsView のサブクラスでこの関数を再実装し、新しいビューポートwidget が使用される前に初期化してください。
setViewport()も参照してください 。
void QGraphicsView::shear(qreal sh, qreal sv)
現在のビュー変換を (sh,sv) で切り取ります。
setTransform()、transform()、rotate()、scale()、およびtranslate()も参照してください 。
[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)
QWidget::showEvent(QShowEvent *event) の再実装です。
[override virtual] QSize QGraphicsView::sizeHint() const
QAbstractScrollArea::sizeHint() const を再実装します。
QTransform QGraphicsView::transform() const
ビューの現在の変換行列を返します。現在の変換が設定されていない場合は、単位行列が返されます。
setTransform()、rotate()、scale()、shear()、およびtranslate()も参照してください 。
void QGraphicsView::translate(qreal dx, qreal dy)
現在のビュー変換を (dx,dy) によって変換します。
setTransform()、transform()、rotate()、およびshear()も参照してください 。
[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)
シーンの矩形の更新をスケジュールしますrects 。
QGraphicsScene::changed()も参照してください 。
[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)
QGraphicsView に対し、シーンのシーン矩形が変更されたことを通知します。rect は新しいシーン矩形です。ビューにすでに明示的に設定されたシーン矩形がある場合、この関数は何もしません。
sceneRect およびQGraphicsScene::sceneRectChanged()も参照してください 。
[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)
QAbstractScrollArea::viewportEvent(QEvent *event) を再実装します。
QTransform QGraphicsView::viewportTransform() const
シーン座標をビューポート座標に変換する行列を返します。
mapToScene() およびmapFromScene()も参照してください 。
[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)
QAbstractScrollArea::wheelEvent(QWheelEvent *e) を再実装します。
© 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.