3

ドキュメントから、このスニペットは

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QGraphicsView *v = new QGraphicsView(new QGraphicsScene);
    setCentralWidget(v);

    QGraphicsRectItem *r1 = v->scene()->addRect(QRectF(100,100, 200,200), QPen(), QBrush(Qt::red));
    QGraphicsRectItem *r2 = new QGraphicsRectItem(r1);
    r2->setRect(QRectF(10,10, 50,50));
    r2->setBrush(QBrush(Qt::blue));
}

赤い四角形の中に青い四角形を描画しますが、代わりに結果は次のとおりです。

ここに画像の説明を入力

私は何かが恋しいですか?

4

2 に答える 2

3

私は何かが恋しいですか?

はい。

を呼び出しsetRect()QGraphicsRectItemも実際にはその は変更されずpos()、描画する長方形の位置が変更されるだけですが、アイテムの位置は変更されません。したがって、あなたr1の pos は (0, 0) ですが、その長方形は (100, 100) オフセットで描画されますpos()

混乱を避けるために、通常は rect を (0, 0) のままにして、必要な場所に移動するように要求setPos()する方が簡単です。QGraphicsRectItem

于 2013-05-08T16:45:49.190 に答える
1

赤い四角形の中に青い四角形が必要な場合は、その四角形の位置を画面座標で設定するか、setParentItem を使用して青い四角形を赤い四角形の親として設定することができます。このようにして、子の位置は親に対して相対的に設定されます。

于 2013-05-09T10:26:12.283 に答える