O que é um papel em um QTreeWidgetItem?
-
21-08-2019 - |
Pergunta
Eu tenho um QTreeWidget
com várias colunas, acrescento QTreeWidgetItems
a ele. Eu tento fazer a segunda coluna contém um valor numérico para cada Item
para que eu possa classificar os itens por este valor
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
Não consigo encontrar qualquer documentação sobre o que este argumento role
é. Tudo o que sei é que se eu configurá-lo para 1 ou 2, algo que aparece na coluna, se eu configurá-lo para 0 ou> = 3, não mostra nada até na coluna, independentemente, os números sempre acabam sendo classificados em ordem alfabética, que é errado.
Solução
Você pode usar o Qt :: UserRole para fins específicos de aplicação. Desde esses dados é um QVariant, você pode criar um QList para definir vários dados e depois lançá-lo aos QVariant e defina os dados.
Aqui está um exemplo:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Outras dicas
A documentação relevante pode ser encontrado em Qt :: ItemDataRole (encontrado através QAbstractItemModel :: setDate ) . As funções são usadas para especificar o que os dados que você está passando deve ser usado para. Você pode usar papéis diferentes para definir a dica de ferramenta, fonte ou a cor de um item, entre outras coisas.
Note que item->text()
é uma conveniência equivalente a item->data(Qt::DisplayRole).toString()