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 单位宽 x 768 单位高。否则场景和视图会认为 (0, 0) 是中间坐标。

于 2012-07-22T01:31:07.770 回答