2009-08-25 9 views
9

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

Répondre

17

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

  • editTriggers à QAbstractItemView::NoEditTriggers
  • selectionBehavior-QAbstractItemView::SelectRows
  • manière optionnelle selectionMode-QAbstractItemView::SingleSelection si vous voulez que l'utilisateur sélectionne exactement une ligne

sur l'objet tableview les appels appropriés seront tous préfixés avec set par exemple setEditTriggers() dans le Designer, vous pouvez trouver ces options dans la section AbstractItemView

+0

il est appelé QAbstractItemView :: NoEditTriggers, QAbstractItemView :: SelectRows et QAbstractItemView :: SingleSelection, mais c'est exactement ce que je cherchais. Je vous remercie! – Berschi

8

Essayez ceci:

table->setEditTriggers(QAbstractItemView::NoEditTriggers); 
2

bascule hors ItemIsEditable de l'élément de table bits. .: par exemple

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

1

Idéalement, vous voulez utiliser:

void QAbstractItemView::setItemDelegate (QAbstractItemDelegate * delegate) 

Et puis créez une classe qui hérite de QItemDelegate comme dans this exemple. Modification de votre classe d'avoir

QWidget * QItemDelegate::createEditor (QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const 

retour NULL

ou de l'utilisation:

table->setEditTriggers(QAbstractItemView::NoEditTriggers); 

Vous voudrez aussi regarder

void setSelectionBehavior (QAbstractItemView::SelectionBehavior behavior) 

Avec le paramètre: QAbstractItemView::SelectRows

Pour référence: http://doc.trolltech.com/4.5/qtableview.html

Questions connexes