0

QGraphicsViewとQGraphicsSceneをテストしようとしています。QGraphicsItemを継承するクラスBrickを作成しました。Brickクラスは、コンストラクターを呼び出すときに指定されたコーディネーターにブリックを描画します。今、私はプログラムの最初の行をレンガで埋めようとしています。ブリックスプライトは32x32です。

ブリッククラスコンストラクター:

Brick::Brick(int x, int y)
{
pixmap = new QPixmap("brickblock.jpeg");

setPos(x, y);
}

ウィンドウのコンストラクター:

    for(int i = 0; i <= 768; i+=32){ // 24 bricks
    Brick *abrick = new Brick(i, 0); // x = i; y = 0;
    scene->addItem(abrick);}

問題は、プログラムがこれらのブリックを最初の行ではなく、画面の中央のどこかに描画することです。GraphicsViewは画面全体を占めています。

4

1 に答える 1

3

使用してみてください:

scene->setSceneRect(0, 0, 768, 768);

つまり、これにより、シーンとビューに左上の座標が(0、0)であり、シーンの幅が768単位、高さが768単位であることがわかります。それ以外の場合、シーンとビューは(0、0)を中央の座標と見なします。

于 2012-07-22T01:31:07.770 に答える