Os objetos parecem ser excluídos se não forem atribuídos à variável do objeto no PySide

StackOverflow https://stackoverflow.com/questions/4071740

  •  28-09-2019
  •  | 
  •  

Pergunta

Estou tentando usar QStandardItemModel para representar uma hierarquia de dados, mas quando estou adicionando QStandardItems ao modelo, tenho que atribuí-los em variáveis ​​de membro do objeto, ou os objetos parecem ser excluídos.

Por exemplo

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

Funciona conforme o esperado (uma linha "Inserção" é inserida na coluna "Categoria").Mas se eu remover a atribuição self.out_insertion, como:

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

Não funciona (é mostrada uma linha vazia).

Estou usando Qt 4.6.3 e PySide 0.4.1.Alguém pode me explicar por que isso acontece?

desde já, obrigado

~Aki

Foi útil?

Solução

Seu objeto é coletado como lixo, pois não existem mais referências (Python) a ele.

Este comportamento é descrito no 'coisas para estar ciente'na documentação do PyQt.

A maioria desses problemas (em terras PyQt) pode ser evitada pelo correto parenting (o que faz com que o Qt assuma a propriedade em vez do PyQt).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top