QGraphicsView Class
QGraphicsViewクラスは、QGraphicsScene の内容を表示するためのウィジェットを提供する...続きを読む
Header: | #include <QGraphicsView> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Inherits: | 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) |
保護された関数
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
この enum は、QGraphicsView のキャッシュ・モードに設定できるフラグを記述します。
定数 | 値 | 説明 |
---|---|---|
QGraphicsView::CacheNone | 0x0 | すべてのペイントはビューポートに直接行われます。 |
QGraphicsView::CacheBackground | 0x1 | 背景はキャッシュされます。これは、カスタム背景と、backgroundBrush プロパティに基づく背景の両方に影響します。このフラグが有効な場合、QGraphicsView はビューポートのフルサイズで 1 つの pixmap を割り当てます。 |
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
このプロパティは、シーン全体が可視である場合に、ビューにおけるシーンのアライメントを保持する。
シーン全体がビューに表示されている場合(すなわち、スクロールバーが表示されていない場合)、ビューのアライメントは、シーンがビューのどこにレンダリングされるかを決定する。例えば、alignmentがデフォルトのQt::AlignCenter の場合、シーンはビューの中央に表示され、alignmentが(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 を使用すると、クリッピング、余分な境界矩形の調整、およびその他の特定の補助を使用して、一般的なケースのグラフィックスシーンのレンダリング品質とパフォーマンスを向上させることができます。ただし、ターゲットプラットフォーム、シーン、および使用中のビューポートによっては、これらの操作の一部がパフォーマンスを低下させる可能性があります。
その影響はフラグによって異なります。詳細は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
このプロパティは、このビューによって視覚化されるシーンの領域を保持する。
シーンの矩形は、シーンの範囲を定義し、ビューの場合、これはスクロールバーを使用してナビゲートできるシーンの領域を意味する。
未設定の場合、またはNULLQRectF が設定されている場合、このプロパティは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)
再リンプルメント: (QDragEnterEvent *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)
これはオーバーロードされた関数です。
aspectRatioMode に従ってビューを拡大縮小し、item がビューの内側にぴったり収まるようにします。
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)
再リンプルメント: (bool next):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(Qt::InputMethodQuery query) const.
[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 にあるアイテムを返す。この位置に複数の項目がある場合、この関数は一番上の項目を返します。
例
void CustomView::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::pos() と同様に、変換されていないビューポート座標です。
void CustomView::mousePressEvent(QMouseEvent *event) { qDebug() << "There are" << items(event->pos()).size() << "items at position" << 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)
再リンプルメント: (QKeyEvent *e):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)
再リプルメント: (QMouseEvent *e):QAbstractScrollArea::mousePressEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
再リプルメント: (QMouseEvent *e)QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::paintEvent(QPaintEvent *event)
再リンプルメント: (QMouseEvent *e)QAbstractScrollArea::paintEvent(QPaintEvent *event)。
void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
painter を使って、シーンからビュー座標であるsource rect を、ペイントデバイス座標であるtarget rect にレンダリングします。この関数は、QImage のようなペイントデバイスにビューの内容をキャプチャしたり(スクリーンショットを撮るなど)、QPrinter に印刷したりするのに便利です。例えば
QGraphicsScene scene; scene.addItem(... ... QGraphicsView view(&scene); view.show(); ... QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPrinter::A4); 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 がヌル矩形の場合、この関数はviewport()->rect() を使用して描画対象を決定します。target が null rect の場合、painter のペ イ ン ト デバ イ ス の完全な寸法 (た と えば QPrinter の場合はページサ イ ズ) が用い ら れます。
元 rect の内容は、aspectRatioMode に従っ て変換 さ れ、 タ ーゲ ッ ト rect に収ま る よ う にな り ます。デフ ォル ト では縦横比が保たれ、source はtarget に収ま る よ う 縮小 さ れます。
QGraphicsScene::render ()も参照してください 。
void QGraphicsView::resetCachedContent()
キャッシュされた内容をリセットします。この関数を呼び出すと、QGraphicsView のキャッシュがクリアされます。現在のキャッシュモードがCacheNone の場合、この関数は何もしません。
この関数は、backgroundBrush またはQGraphicsScene::backgroundBrush プロパティが変更されたときに自動的に呼び出されます。この関数を呼び出す必要があるのは、QGraphicsScene::drawBackground() またはQGraphicsView::drawBackground() を再実装してカスタム背景を描画し、完全な再描画をトリガする必要がある場合だけです。
cacheMode()も参照 。
void QGraphicsView::resetTransform()
ビューの変換を ID 行列にリセットします。
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)
このシグナルは、ラバーバンドrectが変更されたときに発せられます。ビューポートRectは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 が真の場合、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 が真の場合、matrix が現在の行列と組み合わされます。そうでない場合、matrix が現在の行列を置き換えます。combine はデフォルトでは偽です。
変換行列はシーンをビュー座標に変換します。恒等行列によって提供されるデフォルトの変換を使用すると、ビューの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 によって呼び出されます。新しいビューポートwidget が使用される前に初期化するために、QGraphicsView のサブクラスでこの関数を再実装します。
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
再リンプルメント: (QShowEvent *event):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)を参照してください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。