我正在尝试将一些 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);
在Qt \ C ++中是否有类似的东西可以让我减少打字?
答案 0 :(得分:3)
您可以将C ++ 11 Range-based for loop与braced-init-list一起使用,其中包含您要添加的小部件,如下所示:
for(auto label : {l1, l2, l3})
qVB->addWidget(label);
答案 1 :(得分:2)
如果你真的想减少你的类型负载,就会这样做。
std::vector<std::string> names = {"l1", "l2", "l3", .......};
for(std::string name : names)
qVB->addWidget(new QLabel(name.c_str()));