0

我正在尝试创建 QLabels 的 QVector。

我不知道该怎么做。我已经像这样声明了我的 QVector:QVector<QLabel> labels

在我的 .cpp 文件中,我想将每个标签设置为像素图。我应该先通过 for 循环初始化所有实例吗?

在我的构造函数内部:

 for(int i = 0; i < usrinput; i++)
  {
     labels.append(new QLabel);
     setplayerpiece(i);
  }

我在构造函数之外有一个函数,它将每个 QLabel 设置为图像:

   void CentralWidget::setplayerpiece(int tk)
{
  if (p[tk]->setpiece() == 0)
  {
    labels[tk]->setPixmap(QPixmap(":/images/hat.png"));
  }
  else if (p[tk]->setpiece() == 1)
  {
    labels[tk]->setPixmap(QPixmap(":/images/car.png"));
  }
  else if (p[tk]->setpiece() == 2)
  {
    labels[tk]->setPixmap(QPixmap(":/images/shoe.png"));
  }
  else if (p[tk]->setpiece() == 3)
  {
    labels[tk]->setPixmap(QPixmap(":/images/spaceship.png"));
  }
  else if (p[tk]->setpiece() == 4)
  {
    labels[tk]->setPixmap(QPixmap(":/images/basketball.png"));
  }
  else if (p[tk]->setpiece() == 5)
  {
    labels[tk]->setPixmap(QPixmap(":/images/ring.png"));
  }
}

在为每个实例初始化调用函数 setplayerpiece 的标签之后,是否应该在构造函数中运行另一个 for 循环?基本上我想做的是为每个玩家分配一个图像。如果我含糊不清或您需要更多信息,请告诉我。感谢您的任何帮助。

4

1 回答 1

1

这种方法怎么样:

QVector<QString> playerIconPath;


playerIconPath.append(":/images/hat.png");
playerIconPath.append(":/images/car.png");
playerIconPath.append(":/images/shoe.png");
playerIconPath.append(":/images/spaceship.png");
playerIconPath.append(":/images/basketball.png");
playerIconPath.append(":/images/ring.png");

QVector<QLabel*> labels

for(int i = 0; i < playerIconPath.size(); i++)
{
    labels.append(new QLabel);
    labels[i]->setPixmap(QPixMap(playerIconPath[i]));
}

如果您希望在设计中这样做,所有这些都可以在构造函数中完成。

于 2014-05-02T03:41:48.947 回答