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更能读和简洁。