11
votes

QTableView - Ne pas autoriser l'utilisateur à éditer la cellule

J'ai créé un QTableView avec un QSQLTABLEBemodel. Par standard, double-cliquez sur les cellules les marquera et l'utilisateur peut les modifier. Je veux que l'utilisateur ne soit autorisé à faire cela. Il est autorisé à marquer la ligne entière en cliquant sur une seule cellule, mais pas pour éditer la cellule. Comment puis-je faire ça?


0 commentaires

4 Réponses :


10
votes

Essayez ceci:

table->setEditTriggers(QAbstractItemView::NoEditTriggers);


0 commentaires

4
votes

bascule sur le tableau article consacré code> bit. E.G.:

QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);


0 commentaires

1
votes

idéalement, vous voudrez utiliser: xxx pré>

puis crée une classe qui hérite de qitemdelegate code> comme dans Cet exemple . Modification de votre classe pour avoir p> xxx pré>

retour null code> p>

ou utilisez: p>

void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )


0 commentaires

20
votes

Selon que vous codez tout ou que vous faites des choses dans le concepteur, définissez

  • EditTriggers à QabstractItemView :: NoeditTriggers
  • sélectionBehavior à qabstractItemView :: selectRows
  • Enregistrement éventuellement SélectionMode TO QabstractItemView :: Singleselection Si vous souhaitez que l'utilisateur sélectionne exactement une ligne

    Sur l'objet TableView, les appels appropriés seront tous préfixés avec définir par exemple SETEDITTRIGGETS () dans le concepteur, vous pouvez trouver ces options dans le abstracttractemview Section


2 commentaires

Ça s'appelle QabstractItemView :: NoeditTriggers, QabstractItemView :: SelectRows and QabstractItemview :: Singleselection, mais c'est exactement ce que je cherchais. Merci!


mais le replacer sur AlleDitTriggers ne permet pas d'éditer plus