Кажется, что объекты удаляются, если они не назначены переменной объекта в PySide. - PullRequest
1 голос
/ 01 ноября 2010

Я пытаюсь использовать QStandardItemModel для представления иерархии данных, но когда я добавляю QStandardItems в модель, мне нужно назначить их в переменных-членах объекта, или объекты, кажется, удалены.

Например

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.out_insertions = QStandardItem("Insertions")
self.tree_model.invisibleRootItem().appendRow(self.out_insertions)

Работает как положено (строка «Вставка» вставлена ​​под столбцом «Категория»). Но если я удалю назначение self.out_insertion, например:

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.tree_model.invisibleRootItem().appendRow(QStandardItem("Insertions"))

Не работает (отображается пустая строка).

Я использую Qt 4.6.3 и PySide 0.4.1. Может кто-нибудь объяснить мне, почему это происходит?

Заранее спасибо

~ Aki

1 Ответ

4 голосов
/ 01 ноября 2010

Ваш объект получает мусор, так как больше нет ссылок (Python) на него.

Это поведение описано в «, что нужно знать о » в документации PyQt.

Большинство из этих проблем (в земле PyQt) можно избежать, если правильно ввести parenting (что заставляет Qt вступать во владение вместо PyQt).

...