2010-09-09 7 views
7

J'utilise QTableView et QStandardItemModel maintenant.Comment déclencher le mode d'édition d'un élément dans un QTableView?

Dans QTableView, si vous double-cliquez sur une cellule, cette cellule passe en mode édition et vous pouvez modifier son contenu.

Maintenant, j'ai un problème, je veux déclencher le mode d'édition d'un article par code (par commande), que dois-je faire? Je ne peux pas trouver la fonction ou l'emplacement approprié dans QTableView ou QStandardItemModel. Ai-je besoin d'émettre un signal pour passer en mode édition?

Et quel signal je devrais attraper si je veux savoir quand l'édition est terminée (l'utilisateur appuient sur "Entrée" ou cliquent sur un autre articles pour quitter le mode d'édition)?

Merci pour votre aide

Répondre

7

Voir:

void QAbstractItemView::edit (const QModelIndex & index) [slot] 
void QAbstractItemView::closeEditor (QWidget * editor, QAbstractItemDelegate::EndEditHint hint) [virtual protected slot] 
void QAbstractItemView::editorDestroyed (QObject * editor) [virtual protected slot] 
+1

Vraiment merci! Cela résout tout de mon problème :) –

10

vous devriez être en mesure d'utiliser la méthode d'édition de la classe QAbstractItemView pour déclencher l'édition de l'index de modèle donné.

Pls, voir si un exemple ci-dessous fonctionnerait pour vous:

QModelIndex index = ui->tableView->model()->index(0, 0, QModelIndex()); 
ui->tableView->edit(index); 

espérons que cette aide, ce qui est

+0

Merci beaucoup pour votre aide, c'est utile et l'exemple fonctionne :) C'est une lapidaire que je ne peux pas donner plusieurs réponses à la bonne note, donc je peux juste vous voter ^^ –

Questions connexes