2009-12-04 1 views
5
QStandardItemModel

J'ai un QTableView et un QStandardItemModel. Une colonne peut-elle contenir des cases modifiables par l'utilisateur sans utiliser de délégués ou en utilisant les classes de modèles abstraits? Ce n'est pas que je ne peux pas le faire, je veux juste minimiser le code, je le trouverais exagéré pour les cases à cocher simples.Comment puis-je ajouter un utilisateur case modifiable dans QTableView en utilisant uniquement

En utilisant model.setData(index, Qt::Unchecked,Qt::CheckStateRole) cela crée la case à cocher, mais il n'est pas modifiable par l'utilisateur (texte à côté de la case est).

J'utilisé modelTX.setData(index, FALSE) mais cela crée une zone de liste déroulante contenant Vrai et Faux.

Je vais essayer setItemData.

Répondre

14

pls, vérifier si l'exemple suivant fonctionnerait pour vous:

QStandardItemModel* tableModel = new QStandardItemModel(); 
// create text item 
tableModel->setItem(0, 0, new QStandardItem("text item")); 
// create check box item 
QStandardItem* item0 = new QStandardItem(true); 
item0->setCheckable(true); 
item0->setCheckState(Qt::Checked); 
item0->setText("some text"); 
tableModel->setItem(0, 1, item0); 
// set model 
ui->tableView->setModel(tableModel); 

espérons que cette aide, ce qui est

+0

thx pour la réponse. Je vais le faire lundi quand je reviendrai au travail mais je pense que ça va marcher. –

+0

cela fonctionne, merci. Mais comment cocher chaque case si elle est cochée ou non? –

+1

@ Suda.nese Utiliser 'item0-> checkState()' fot cette fin. PS. Lorsque vous utilisez habituellement Qt pour chaque méthode setter à la 'setSomething()' il y a un getter nommé 'quelque chose()'. –