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

C++ Qt GUI如何将这些标签放入数组,c++,qt,C++,Qt,如何将我的标签设置为数组中,以便以后调用?为了实现这一目标,我似乎无法掌握标签的类型 我所拥有的是这个,然而这将是相当丑陋的维持。 如果我能改变这个 ui->label_11->setVisible(false); ui->label_5->setVisible(false); ui->label_12->setVisible(false); ui->label_44->setVisible(false); ui->label_43->

如何将我的
标签设置为数组中,以便以后调用?为了实现这一目标,我似乎无法掌握标签的类型

我所拥有的是这个,然而这将是相当丑陋的维持。 如果我能改变这个

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);    
}
SometypeIdoNotKnow值[7]={ui->label\u11,
用户界面->标签5,
ui->label_12,
ui->label_44,
ui->label_43,
用户界面->标签9,
用户界面->标签10,
ui->label_42};
for(int i=0;i setVisible(false);
}

谢谢@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;                 
}  
QLabel*值[7]={ui->label\u11,
ui->label_12,
ui->label_44,
ui->label_43,
用户界面->标签9,
用户界面->标签10,
ui->label_42};
对于(int i=0;i<7;i++){
值[i]->setVisible(假);

qDebug()谢谢@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;                 
}  
QLabel*值[7]={ui->label\u11,
ui->label_12,
ui->label_44,
ui->label_43,
用户界面->标签9,
用户界面->标签10,
ui->label_42};
对于(int i=0;i<7;i++){
值[i]->setVisible(假);

qDebug()如果您的编译器不古老,请使用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();
//如果您只想迭代一些标签
自动常量标签={ui->label_11,ui->label_12,ui->label_44,
ui->label_43,ui->label_9,ui->label_10,
ui->label_42};
//如果要迭代所有标签
自动标签=findChildren();
对于(自动标签:标签)标签->隐藏();

如果您的编译器不古老,请使用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();
//如果您只想迭代一些标签
自动常量标签={ui->label_11,ui->label_12,ui->label_44,
ui->label_43,ui->label_9,ui->label_10,
ui->label_42};
//如果要迭代所有标签
自动标签=findChildren();
对于(自动标签:标签)标签->隐藏();

BTW,你的例子有UB。我的意思是
sometypeidnotknowvalue[7]
然后
for(int I=0;I改为
QList labels=findChildren();
这将为您提供父窗口小部件中存在的所有标签的列表。SometypeIdoNotKnow是一个
QLabel*
@drescherjm好主意,但它假设所有标签都要迭代。我正在考虑这一部分。如果您只需要迭代其中的一个子集,您仍然可以使用
findChildren()
可能会使用
QRegularExpression
参数(将标签命名为相同的基本对象名称)和/或过滤器,但这取决于您的情况。顺便说一句,您的示例有UB。我的意思是
某些类型的未知值[7]
然后
for(int I=0;我改为
QList labels=findChildren();
这将为您提供父窗口小部件中存在的所有标签的列表。SometypeIdoNotKnow是一个
QLabel*
@drescherjm好主意,但它假设所有标签都要迭代。我正在考虑这一部分。如果您只需要迭代其中的一个子集,您仍然可以使用
findChildren()
也许可以使用
QRegularExpression
参数(将标签命名为相同的基本对象名称)和/或过滤器,但这取决于您的情况。自动类型是怎么回事?它的工作原理非常酷:)感谢您向我展示了如何在某个父项下获取所有子项?例如在
verticalLayout
@tisaCondurum下,布局在
QObject
父项的意义上不是父项。由给定布局管理的小部件的迭代包含在@tisaCondurum“自动类型是什么?”它不是一种类型。它是编译器执行类型推断的指令。它是现代C++的5年历史。你可能希望读C++ 11,它比C++更容易读和简洁。什么是自动类型?这真是太酷了。感谢您向我展示了如何在某个父项下获取所有子项?例如在
verticalLayout
@tisaCondurum下,布局在
QObject
父项的意义上不是父项。由给定布局管理的小部件的迭代包含在@tisaCondurum“自动类型是什么?”它不是一种类型。它是编译器执行类型推断的指令。它是现代C++的5年历史。你可能希望读C++ 11,它比C++ 98更能读和简洁。