我正在尝试测试QGraphicsView和QGraphicsScene。我创建了一个继承QGraphicsItem的类Brick。 Brick类将在调用构造函数时绘制一个砖块。现在我正在尝试用砖块填充程序的第一行。 Brick精灵是32x32。
Brick类构造函数:
Brick::Brick(int x, int y)
{
pixmap = new QPixmap("brickblock.jpeg");
setPos(x, y);
}
Window的构造函数:
for(int i = 0; i <= 768; i+=32){ // 24 bricks
Brick *abrick = new Brick(i, 0); // x = i; y = 0;
scene->addItem(abrick);}
问题是程序在屏幕中间某处绘制这些砖块,而不是在第一行。 GraphicsView占据整个屏幕。
答案 0 :(得分:3)
尝试使用:
scene->setSceneRect(0, 0, 768, 768);
简而言之,这将告诉场景和视图左上角坐标是(0,0),并且场景是768个单位宽,768个单位高。否则,场景和视图会将(0,0)视为中间坐标。