Pergunta

Eu tenho um QTableView para o qual quero exibir a última coluna sempre no modo de edição. (É um qcombobox, onde o usuário deve sempre alterar o valor.)

Eu acho que vi a solução no Documentação QT, mas não consigo mais encontrar. Existe uma maneira simples de fazer isso?

Eu acho que poderia arquivar esse efeito usando openPersistentEditor() Para cada célula, mas estou procurando uma maneira melhor. (Como especificá -lo apenas uma vez para toda a coluna.)

Foi útil?

Solução

Existem duas possibilidades:

Usando setIndexWidget, mas TrollTech escreve:

Esta função deve ser usada apenas para exibir conteúdo estático na área visível correspondente a um item de dados. Se você deseja exibir conteúdo dinâmico personalizado ou implementar um widget de editor personalizado, a subclasse qitemDelegate.

(E quebra o padrão de modelo/visualização…)

Ou usando um delegado paint método. Mas aqui você deve implementar tudo como ele mesmo os elementos habilitados/desativados.

Outras dicas

Uma maneira de obter o comportamento automático de edição é chamar a função SetEditTriggers () da View com o valor QabStractEMView :: Alledittriggers.

Para exibir o conteúdo de uma determinada coluna de uma certa maneira, dê uma olhada no qabstractItemView :: setItemDelegateForColumn (). Isso permitirá que você especifique um delegado personalizado apenas para os itens que precisam. No entanto, ele não criará automaticamente um widget do editor para cada um deles (poderia, em princípio, haver milhares deles), mas você pode usar o delegado para renderizar cada item de uma maneira que o faça parecer um widget do editor.

o QabstractItItemModel::bandeiras A função virtual é chamada para testar se um item é editável (ver Qt :: itemisedable). Dar uma olhada em Tornando o modelo editável no Modelo/Exibir programação documentação.

Não vejo uma maneira fácil de fazer isso, mas você pode gerenciar usando um delegado. Sinceramente, não sei exatamente como funcionaria, mas você poderá conseguir algo funcionando se se esforçar o suficiente. Se você obtiver um delegado adequado, poderá defini -lo em uma visualização inteira, uma célula de uma visualização ou apenas uma coluna ou linha.

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