【发布时间】:2014-05-02 03:00:07
【问题描述】:
我正在尝试创建 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 循环?基本上我想做的是为每个玩家分配一个图像。如果我含糊不清或您需要更多信息,请告诉我。感谢您的帮助。
【问题讨论】:
-
好吧,首先你不能创建
QVector<QLabel>,因为QLabel是QObject,并且QObjects 是不可复制的;你必须存储指针。 -
@MatteoItalia 好的,所以
QVector<QLabel*> labels然后我会以同样的方式初始化其他所有内容? -
您的代码似乎令人费解且不完整。我认为没有人可以适当地帮助这个描述。请尝试改写它;还有,
p是什么?
标签: c++ qt qpixmap qlabel qvector