Qt Creator 标签值

黄瓜丁

我目前面临以下问题:我有 64 个标签。Label_1 一直到 Label_64。我也有一个 int i。“i”也从 1-64

我想要那个,当 i == 1 Label_1 应显示图像。如果 i == 2,Label_2 将显示该图像,依此类推。

目前我会这样做:

if(i == 1)
{
  QPixmap pix("...");
  ui->label_1->setPixmap(pix);
}

if(i == 2)
{
  QPixmap pix("...");
  ui->label_2->setPixmap(pix);
}

if(i == 3)
{
  QPixmap pix("...");
  ui->label_3->setPixmap(pix);
}

...

有什么方法可以更轻松地做到这一点吗?就像是:

  QPixmap pix("...");
  ui->label_i->setPixmap(pix);

其中选择的标签由 i 直接定义?

m7913d

您可以存储QLabels的列表

QList<QLabel*> labels;
labels.at(i)->setPixmap(pix)

这种方法的缺点是你应该为每个 i 从 1 到 64 手动分配 ui->label_i 到 labels.at(i) 一次:

labels.insert(0, NULL); // empty space to keep numbering the same.
labels.insert(1, ui->labels_1);
labels.insert(2, ui->labels_2);
...
labels.insert(64, ui->labels_64);

根据您的具体情况,您可能会使用更棘手的解决方案。例如,如果所有标签都存储在 QVBoxLayout 位置 1 到 64 处,则可以按如下方式访问标签 i:

QVBoxLayout *layout = ...;
QLabel *label = qobject_cast<QWidget*> (layout->itemAt(i)->widget ());
if (label) // should be true if assumption is correct
    label->setPixmap(pix);

您也可以使用方法二来初始化方法一的列表。

有关更多信息,请参阅 Qt 文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章