2017-04-09 22 views
0

現在、私は次の問題に直面しています: 私は64個のラベルを持っています。 Label_1までLabel_64まで。 私はint iを持っています。 "i"も1から64までですQt Creatorのラベル値

私は、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); 
 
} 
 

 
...

簡単にそれをするためにいくつかの方法があります:

現在、私はそれを行うだろうか?以下のような何か:

選びだしラベルを直接iで定義されて

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

ありがとうございました! :)

+0

注:この場合は、switch文がより適切な場合があります。 – m7913d

答えて

0

QLabelのリストを保存することができます。あなたの特定のケースに応じて、

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); 

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

この方法の欠点は、あなたが手動ですべてのI 1から一度に64のために(I)labels.atするUI-> label_i割り当てるべきであるということですより複雑なソリューションを使用することができます。すべてのラベルが64に1位のQVBoxLayoutに格納されている場合たとえば、あなたは私が次のようにラベルにアクセスすることができます:あなたは、メソッドのリストを初期化する方法2を使用することができます

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

1.

詳細については、Qtのドキュメントを参照してください。

+0

ありがとうございました! ui-> labelをlabels.at(i)に割り当てる方法の例を教えてください。 ちょうどi = 1はすばらしいでしょう:) – CucumberTim

関連する問題