Qt - Como associar dados ao QTableWidgetItem?
-
24-09-2019 - |
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?
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.