我有一个代码,用于生成Qt场景中的卡片项目.这是我到目前为止所提出的.调用的成员函数正是您从名称中派生的函数,因此我不需要在此处包含它们.
// creating the cards
int x = 0;
int y = 0;
int line_brake = 0;
for(int i = 0; i < width; i++)
{
for(int j = 0; j < width; j++)
{
card = new Card();
int card_width = card->getWidth();
int card_height = card->getHeight();
if(j == (width-1))
{
line_brake = 1;
}
else if((j != (width-1)) && (line_brake == 1))
{
y += card_height;
card->setPos(x,y);
line_brake = 0;
x = 0 - card_width;
}
else
{
card->setPos(x,y);
x += card_width;
}
scene->addItem(card);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的场景在运行此代码后的样子:

可能是什么问题?我需要将牌放在一个7*7的方格中.这意味着7行,7列,每个字段中有一个卡片图像.
这是我的场景看待@molbdnilo编辑建议的方式:

// creating the cards
int x = 0;
int y = 0;
int line_brake = 0;
for(int i = 0; i < width; i++)
{
for(int j = 0; j < width; j++)
{
card = new Card();
int card_width = card->getWidth();
int card_height = card->getHeight();
if(j == (width-1))
{
line_brake = 1;
continue;
}
else if((j != (width-1)) && (line_brake == 1))
{
y += card_height;
card->setPos(x,y);
line_brake = 0;
x = 0;
}
else
{
card->setPos(x,y);
x += card_width;
}
scene->addItem(card);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
只是为了完成vahancho给你的答案.当您遇到这样的问题时,只需拿一支笔和一张纸,逐步写出您的变量值.这很简单,你可以弄清问题是什么.
从...开始:
开始循环:
i = 0,j = 6 - >进入第一个条件,没有setPos(),看看卡构造函数中的默认x,y值?,卡添加可能在0,0,line_break = 1(卡G)
i = 1,j = 0 - >进入第二个条件,y = 1,card-> setPos(6,1),line_break = 0,next x = -1(卡H)
i = 1,j = 6 - >进入第一个条件,没有setPos(),看看卡构造函数中的默认x,y值?,卡添加可能在0,0,line_break = 1(卡N)
i = 2,j = 0 - >进入第二个条件,y = 2,card-> setPos(4,2),line_break = 0,next x = -1(卡O)
结果如下:
