Митрич
Май 30, 2009 16:08:38
В C проблема решается вызовом деструктора того, что выдает widget.layout() и дальше widget.setLayout(newlayout), а в Python как уничтожить старый layout?
poltergeist
Май 31, 2009 10:05:21
import sip
sip.delete(widget.layout())
Митрич
Май 31, 2009 12:00:18
спасибо, про сип я и не подумал…
Митрич
Июнь 1, 2009 16:20:53
только с этим надо быть внимательнее, так как sip.delete не производит вызова деструктора и соответственно все детишки остаются как живые…
Mixolap
Июнь 8, 2009 19:13:56
А чтобы прибить все дочернии такой код пользовать?
layout = self.graphWidget.layout()
while layout.count():
sip.delete(layout.takeAt(0))
sip.delete(layout)
это с учетом что у этих дочерних нет своих дочерних… а если есть?
poltergeist
Июнь 9, 2009 00:00:21
Mixolap...
temp = QWidget()
temp.setLayout(widget.layout())
temp.deleteLater()
widget.setLayout(new_layout)
...
Так лучше? Надеюсь увидеть что-то изящнее:)