Question

Je besoin d'un bouton / lien dans une ligne de tableau d'un QTableView. Ceci est d'ouvrir une boîte de dialogue pour permettre cette ligne à modifier de manière plus efficace.

Après des heures de recherche sur le web, je suis encore à trouver un exemple décent.

Je suis conscient que cela est susceptible d'être fait en utilisant un QItemDelegate, mais je ne suis pas sûr comment avoir un widget fonctionnel dans la ligne sans forcer l'élément en mode d'édition en premier.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Vous pourriez émuler la fonctionnalité d'un lien en soulignant le texte cliquable, la capture puis le clic de la cellule via le signal cellClicked (ligne, colonne) et vérifier que le col == editColumn. Ensuite, la ligne correspondrait à quel élément vous modifiez.

Par exemple,

Nom des données | Valeur 1 | Valeur 2 | Modifier

connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));

...

void ClassName::editSlot(int row, int col){
  if (col == 3) {
    doWork(row);
  }
}

Autres conseils

Vous pouvez utiliser setIndexWidget pour cela, consultez la documentation Qt plus d'informations.

A titre d'exemple, pour incorporer un bouton-poussoir dans la première colonne de la deuxième rangée (code non testé):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top