当objectname包含特定字符串时,QWidget findChildren

时间:2018-05-10 12:03:08

标签: c++ qt find qwidget

如何列出qwidget中包含de objectname中特定字符串的所有子节点?

例如,如果我有:

 "general_widget", with children:
    "label_name_1"
    "label__1"
    "label_name_2"
    "label_id_2"
    "label_name_3"
    "label_id_3"
    "label_name_4"
    "label_id_4"

我想获得一个包含" name"作为objectName的一部分,以及包含" id"的所有子节点的另一个列表。谢谢!

1 个答案:

答案 0 :(得分:1)

使用findChildren()objectName().contains(),例如:

QList<QWidget*> subwidgets = this->findChildren<QWidget*>();
QListIterator<QWidget*> it(subwidgets); // iterate through the list of widgets
QWidget *awiget;

while (it.hasNext()) {
    awiget = it.next(); // take each widget in the list
    if (awiget->objectName().contains("name")){
        qDebug() << awiget->objectName();
    }
}