У меня QFrame с QVBoxLayout, и я добавляю свои собственные виджеты в макет для имитации QListWidget, но с дополнительной информацией/функциональностью в элементах. Добавить виджет на макете и сохранить ссылку в переменной члена (это Python):Удаление пользовательского виджета из QVBoxLayout
self.sv_widgets[purchase.id] = widget
self.vl_seatView.addWidget(widget)
Тогда, когда я закончу с пунктом Я хочу, чтобы удалить его с экрана и очистить ссылку :
self.vl_seatView.removeWidget(self.sv_widgets[purchase.id])
del self.sv_widgets[purchase.id]
К сожалению, виджет по-прежнему отображается на экране! Я проверил, и я только добавляю его в макет один раз (и на самом деле отображается только одна копия), попробовал вручную вызывать update() на макете, но безрезультатно. Каков правильный способ сделать это?
Это действительно работает, если я использую это вместо того, чтобы просто позволить ему собирать мусор. Почему не просто удалить его из макета, удалите его с экрана? –
Я обновил ответ с объяснением и другим способом добиться того же. – ChristopheD
Отлично, я никогда бы не подумал об этом, спасибо. –