Qt GUI如何将这些标签放入数组中

时间:2016-06-29 18:19:46

标签: c++ qt

如何将labels设置为稍后要调用的数组?我似乎无法了解labels的类型,以便将其解除。

我拥有的是这一点,但是维护起来会相当难看。 如果我可以改变这个

ui->label_11->setVisible(false);
ui->label_5->setVisible(false);
ui->label_12->setVisible(false);
ui->label_44->setVisible(false);
ui->label_43->setVisible(false);
ui->label_9->setVisible(false);
ui->label_10->setVisible(false);
ui->label_42->setVisible(false);
对此,这是最优选的。但是,也许我正在以错误的方式思考这个问题。

SometypeIdoNotKnow values[7] = {ui->label_11,    
                                ui->label_5,
                                ui->label_12,
                                ui->label_44,
                                ui->label_43,
                                ui->label_9,
                                ui->label_10,
                                ui->label_42};

for (int i=0; i <= 7; i++){    
    values[i]->setVisible(false);    
}

2 个答案:

答案 0 :(得分:2)

如果编译器不是很古老,请使用C ++ 11:

// If you only want to iterate some labels
auto const labels = {ui->label_11, ui->label_12, ui->label_44, 
                     ui->label_43, ui->label_9, ui->label_10, 
                     ui->label_42};
// If you want to iterate all labels
auto labels = findChildren<QLabel*>();

for (auto label : labels) label->hide();

答案 1 :(得分:0)

谢谢@drescherjm的答案。 这似乎有效。

QLabel* values[7] = {ui->label_11, 
                     ui->label_12, 
                     ui->label_44, 
                     ui->label_43, 
                     ui->label_9,  
                     ui->label_10, 
                     ui->label_42};
for (int i = 0; i < 7; i++){       
    values[i]->setVisible(false);  
    qDebug() << i;                 
}