У меня есть a QVBoxLayout
то, что я добавил несколько виджетов к, через addWidget()
. Я должен теперь удалить те виджеты, и кажется, что я должен использовать removeWidget()
(который берет в виджете, который будет удален), сделать это.
Я думал тот вызов children()
или findChildren(QWidget)
на моем расположении возвратил бы список виджетов, которые я добавил в него; я нахожусь в отладчике, тем не менее, и просто получаю пустые списки.
Я ужасно неправильно понимаю что-то? Я только что начал делать PyQT это на прошлой неделе и главным образом учился методом проб и ошибок с документами API.
Странно. Насколько я понимаю, добавление виджетов через addWidget
передает право собственности на макет, поэтому вызов children ()
должен работать.
Однако в качестве альтернативы вы можете перебрать элементы макета, используя count ()
и itemAt (int)
, чтобы предоставить QLayoutItem
в ] removeItem (QLayoutItem *)
.
Изменить:
Я только что попробовал addWidget
с простым тестовым приложением на C ++. и он не передает право собственности QObject
макету, поэтому children ()
действительно является пустым списком. В документах ясно сказано, что право собственности передается, хотя ...
Редактировать 2:
Хорошо, похоже, что он передает право собственности на виджет, имеющий этот макет (который не что сказано в документации). Это делает элементы в макете родственниками самого макета в иерархии QObject
! Поэтому проще использовать count
и itemAt
.