Pynote

Python、機械学習、画像処理について

Qt - QGraphicsScene - シーンの長方形の設定について

概要

Qt の QGraphicsScene でシーンの長方形を設定する方法について

試した環境

シーンの長方形

デフォルトでは、追加されたすべてのアイテムが収まる長方形がシーンの長方形となる。
アイテムを追加するたびに追加済みのアイテムがすべて収まるようにシーンの長方形が調整される。

f:id:nekobean:20171029165302p:plain

シーンの長方形を固定したい場合は、sceneRect プロパティで設定する。

// (1) シーンの長方形を取得する。
QRectF sceneRect() const
// シーンの長方形を設定する。
void setSceneRect(const QRectF &rect)
// シーンの長方形を設定する。
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
// width()
// シーンの長方形の高さを取得する
qreal height() const
// シーンの長方形の幅を取得する
qreal width() const

サンプルコード デフォルトの挙動

// なにも追加されていない状態
qDebug() << scene_->sceneRect();

// 楕円を追加した状態
scene_->addRect(QRectF(100, 100, 500, 100));
qDebug() << scene_->sceneRect();
QRectF(0,0 0x0)
QRectF(99.5,99.5 501x101)

サンプルコード sceneRect を設定した場合

// シーンの大きさを設定する。
scene_->setSceneRect(QRectF(0, 0, 700, 700));
qDebug() << scene_->sceneRect();

// なにも追加されていない状態
qDebug() << scene_->sceneRect();

// 楕円を追加した状態
scene_->addRect(QRectF(100, 100, 500, 100));
qDebug() << scene_->sceneRect();

// 楕円を追加した状態
scene_->addRect(QRectF(500, 500, 500, 100));
qDebug() << scene_->sceneRect();
QRectF(0,0 700x700)
QRectF(0,0 700x700)
QRectF(0,0 700x700)
QRectF(0,0 700x700)

アイテムが追加されてもシーンの長方形は変わらないことがわかる。
シーンの長方形からはみ出た部分は描写されない。