我正在尝试将一些QLabels添加到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++中有什么类似的东西可以让我少打字吗?
发布于 2017-03-06 22:22:53
可以将C++11 基于范围的循环与包含要添加的小部件的带括号的列表一起使用,如下所示:
for(auto label : {l1, l2, l3})
qVB->addWidget(label);发布于 2017-03-06 22:56:05
如果你真的想减少你的类型负载,像这样的东西会做到这一点。
std::vector<std::string> names = {"l1", "l2", "l3", .......};
for(std::string name : names)
qVB->addWidget(new QLabel(name.c_str()));https://stackoverflow.com/questions/42636614
复制相似问题