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? P>
4 Réponses :
Essayez ceci:
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
bascule sur le tableau article consacré code> bit. E.G.:
QTableWidgetItem* item = new QTableWidgetItem(...);
...
item->setFlags(item->flags() &= ~Qt::ItemIsEditable);
idéalement, vous voudrez utiliser: puis crée une classe qui hérite de retour ou utilisez: p> qitemdelegate code> comme dans Cet exemple .
Modification de votre classe pour avoir p>
null code> p>
void setSelectionBehavior ( QAbstractItemView::SelectionBehavior behavior )
Selon que vous codez tout ou que vous faites des choses dans le concepteur, définissez p>
EditTriggers code> à QabstractItemView :: NoeditTriggers Code> Li>
-
sélectionBehavior code> à qabstractItemView :: selectRows code> li>
- Enregistrement éventuellement
SélectionMode CODE> TO QabstractItemView :: Singleselection Code> Si vous souhaitez que l'utilisateur sélectionne exactement une ligne li>
ul>
Sur l'objet TableView, les appels appropriés seront tous préfixés avec définir code> par exemple SETEDITTRIGGETS () code> dans le concepteur, vous pouvez trouver ces options dans le abstracttractemview Code> Section P>
Ç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