Java QVBoxLayout添加所有小部件

Java QVBoxLayout添加所有小部件,java,c++,qt,qlayout,Java,C++,Qt,Qlayout,我正在尝试将一些qlabel添加到QVBoxLayout中: QVBoxLayout *qVB = new QVBoxLayout(); QLabel *l1 = new QLabel("L 1"); QLabel *l2 = new QLabel("L 2"); QLabel *l3 = new QLabel("L 3"); QLabel *l4 = new QLabel("L 4"); qVB -> addWidget(l1); qVB -> addWidget(l2); q

我正在尝试将一些qlabel添加到QVBoxLayout中:

QVBoxLayout *qVB = new QVBoxLayout();

QLabel *l1 = new QLabel("L 1");
QLabel *l2 = new QLabel("L 2");
QLabel *l3 = new QLabel("L 3");
QLabel *l4 = new QLabel("L 4");

qVB -> addWidget(l1);
qVB -> addWidget(l2);
qVB -> addWidget(l3);
qVB -> addWidget(l4);
在Java中,有一种更简单的方法:

VBox vb = new VBox();

Label l1 = new Label("1");
Label l2 = new Label("2");
Label l3 = new Label("3");

vb.getChildren().addAll(l1, l2, l3);
<> PQ>在Qt+C++中有什么类似的东西能让我少打字吗?< /P> < P>你可以使用C++ 11,它包含你想要添加的小部件,类似于:

for(auto label : {l1, l2, l3})
    qVB->addWidget(label);
您可以将C++11与包含要添加的小部件的一起使用,如下所示:

for(auto label : {l1, l2, l3})
    qVB->addWidget(label);

如果你真的想减少你的类型负载,像这样的东西就可以了

std::vector<std::string> names = {"l1", "l2", "l3", .......};
for(std::string name : names)
    qVB->addWidget(new QLabel(name.c_str()));
std::vector names={“l1”、“l2”、“l3”、;
for(标准::字符串名称:名称)
qVB->addWidget(新的QLabel(name.c_str());

如果您真的想减少类型负载,可以这样做

std::vector<std::string> names = {"l1", "l2", "l3", .......};
for(std::string name : names)
    qVB->addWidget(new QLabel(name.c_str()));
std::vector names={“l1”、“l2”、“l3”、;
for(标准::字符串名称:名称)
qVB->addWidget(新的QLabel(name.c_str());

实际上l1、l2、l3只是幻觉变量名。在我编写的应用程序中,它们是
QLabel用户名
QLabel-age
QLabel-dOB
。在这个上下文中使用插图变量名(
l1
l2
l3
)当然比使用
用户名
age
dOB
要好。。。问题/答案应包含尽可能少的噪音。读者不必阅读所有这些不相关的名字,就应该能够理解这个想法。使用不同的变量名与问题完全无关。对不起,我没有得到你的评论。实际上l1、l2、l3只是幻觉变量名。在我编写的应用程序中,它们是
QLabel用户名
QLabel-age
QLabel-dOB
。在这个上下文中使用插图变量名(
l1
l2
l3
)当然比使用
用户名
age
dOB
要好。。。问题/答案应包含尽可能少的噪音。读者不必阅读所有这些不相关的名字,就应该能够理解这个想法。使用不同的变量名与问题完全无关。对不起,我没有得到你的评论。您还可以使用Qt设计器并避免使用代码,对于此类静态内容,这是很实用的,尤其是设置所有布局。您还可以使用Qt设计器并避免使用代码,对于此类静态内容,这是很实用的,尤其是设置所有布局。