Получите виджеты расположения в PyQT

У меня есть a QVBoxLayout то, что я добавил несколько виджетов к, через addWidget(). Я должен теперь удалить те виджеты, и кажется, что я должен использовать removeWidget() (который берет в виджете, который будет удален), сделать это.

Я думал тот вызов children() или findChildren(QWidget) на моем расположении возвратил бы список виджетов, которые я добавил в него; я нахожусь в отладчике, тем не менее, и просто получаю пустые списки.

Я ужасно неправильно понимаю что-то? Я только что начал делать PyQT это на прошлой неделе и главным образом учился методом проб и ошибок с документами API.

9
задан Xiong Chiamiov 19 June 2010 в 20:54
поделиться

1 ответ

Странно. Насколько я понимаю, добавление виджетов через addWidget передает право собственности на макет, поэтому вызов children () должен работать.

Однако в качестве альтернативы вы можете перебрать элементы макета, используя count () и itemAt (int) , чтобы предоставить QLayoutItem в ] removeItem (QLayoutItem *) .

Изменить:

Я только что попробовал addWidget с простым тестовым приложением на C ++. и он не передает право собственности QObject макету, поэтому children () действительно является пустым списком. В документах ясно сказано, что право собственности передается, хотя ...

Редактировать 2:

Хорошо, похоже, что он передает право собственности на виджет, имеющий этот макет (который не что сказано в документации). Это делает элементы в макете родственниками самого макета в иерархии QObject ! Поэтому проще использовать count и itemAt .

10
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: