Pergunta

qual é a melhor maneira de remover uma linha (QTreeWidgetItem) a partir de um QTreeWidget?

O conteúdo QTreeWidget foi definido por:

myQTreeWidget->insertTopLevelItems(0, items); // items = QList<QTreeWidgetItem*>

então eu remover um item da minha "itens" QList e tento limpar / repor o QTreeWidget

packList->clear();    
packList->insertTopLevelItems(0, items);

mas meu aplicativo trava aqui! Sugestões?

Foi útil?

Solução

Seu problema é que chamando packList->clear() exclui a árvore Widget de itens contidos pela árvore. (Consulte a documentação sobre QTreeWidget::clear(), que inclui uma nota sobre os itens que estão sendo removidos da árvore antes de apagar.) Você quer necessidade de encontrar uma maneira de remover os itens, ou não manter uma lista deles separadamente da árvore.

Em uma nota ligeiramente relacionada, se você está tentando manter o controle de outros dados, juntamente com a árvore, eu recomendo que você tente usar a modelos de paradigma. Em casos não-triviais, tem sido geralmente vale o meu tempo para converter a essa técnica, em vez de usar os widgets / itens.

Outras dicas

A partir do que esta documentação diz, você deve ser capaz de fazê-lo com:

packList->takeTopLevelItem(index);

que retorna remove e retorna o item no índice fornecido.

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