一个很好的简单例子会很好。就我而言,我希望做这样的事情:
myLayout->addWidget(myButton1);
myLayout->addWidget(myButton2);
myButtonList<QToolButtons*>->append(myLayout->findChildren(QToolButtons));
myButtonList->at(1)->setText("This is 'myButton2'");
答案 0 :(得分:5)
使用QList以及将findChildren与QWidget一起使用,因为QLayout不会将QWidgets显示为其子节点而QWidget仅具有父QWidget。 Refer this
QWidget w;
QPushButton *p1= new QPushButton;
QPushButton *p2= new QPushButton;
QHBoxLayout l;
l.addWidget(p1);
l.addWidget(p2);
w.setLayout(&l);
QList<QPushButton*> buttons = w.findChildren<QPushButton*>();
buttons.at(0)->setText("Hello I am P1");
buttons.at(1)->setText("Hello I am P2");
w.show();
答案 1 :(得分:4)
首先填充列表的方法以及之后的布局更容易:
QList<QToolButton *> list;
list.append(new QToolButton);
list.last().setText("1");
myLayout->addWidget(list.last());
这也可以轻松循环以获得更多的按钮。
您仍然可以使用
ParentWidget->findChildren<QToolButtons *>();
编辑给定父级的vahancho提示始终是小部件,而不是布局