Pergunta

Quero associar dados adicionais a cada QTableWidgetItem inserido na tabela, para usar esses dados no futuro, quando ele está sendo clicado em um item da tabela. Mas esses dados não devem ser visíveis. Como eu posso fazer isso?

Foi útil?

Solução

Você pode usar QTableWidgetItem::setData() igual a:

setData(Qt::UserRole, myData); // set

Onde myData é um suporte QVariant modelo. Você pode usar QTableWidgetItem::data() Para recuperar o valor que você armazena.

Se você precisar de mais de um, você pode usar Qt::UserRole + 1, + 2 e assim por diante (Qt::UserRole é "a primeira função que pode ser usada para fins específicos de aplicativos". "Você pode ler mais sobre os outros tipos de funções aqui).

Se você estiver armazenando um tipo personalizado que não seja suportado nativamente pelo QVariant, precisará registrar seu tipo no sistema de meta-objeto QT. Olhe para Qmetatype Para mais detalhes sobre isso.

Se você quiser armazenar um número inteiro, por exemplo:

QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
int myInteger = 42;
widgetItem->setData(Qt::UserRole, myInteger);
// ...
myInteger = widgetItem->data(Qt::UserRole);

Outras dicas

Você pode derivar do QTableItem e fornecer seu próprio membro de dados, ou pode usar o QTableView com seu próprio modelo.

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