QList<QLabel> labelList;
foreach (QLabel lbl, ui)
{
labelList.append(lbl);
}
我想在QList
中添加所有QLabel,上面代码生成错误,请帮忙
答案 0 :(得分:5)
您可以使用QList<T> QObject::findChildren ( const QString & name = QString() )
获取指向子窗口小部件的指针列表。如果ui属于QMainWindow
,则可以通过以下方式完成:
QList<QLabel *> list = ui->centralWidget->findChildren<QLabel *>();
要查找非QMainWindow
容器的子项,例如QDialog
或QWidget
,请使用:
QList<QLabel *> list = this->findChildren<QLabel *>();
现在您可以遍历列表,如:
foreach(QLabel *l, list)
{
...
}
或者,在C ++ 11中:
for(auto l : list)
{
...
}
答案 1 :(得分:3)
findChildren应该这样做:尝试
QList<QLabel*> labelList; // note the pointer!
labelList = findChildren<QLabel*>();
在QWidget派生对象中执行