Qt - QTableView - anklickbare Schaltfläche in Tabellenzeile
-
08-10-2019 - |
Frage
Ich benötige eine Schaltfläche / Link innerhalb einer Tabellenzeile eines QTableView
. Dies ist um einen Dialog zu öffnen, dass Zeile zu ermöglichen, effizienter bearbeitet werden.
Nach Stunden der Suche im Web Ich bin noch ein anständiges Beispiel zu finden.
Ich bin mir bewusst, dass dies wahrscheinlich eine QItemDelegate
zu tun ist, aber ich bin nicht sicher, wie eine funktionelle Widget innerhalb der Reihe haben, ohne das Element in dem Bearbeitungsmodus zwingt zuerst.
Jede Hilfe würde sehr geschätzt werden.
Lösung
Sie können die Funktionalität einer Verbindung emulieren, indem Sie den klickbaren Text unterstrichen, dann die Erfassung der Zelle Klick über die cellClicked (Zeile, Spalte) Signal und prüfen Sie, dass col == editColumn. Dann Zeile, auf die Artikel entsprechen würden Sie bearbeiten.
Beispiel:
Daten Name | Wert 1 | Wert 2 | Bearbeiten
connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));
...
void ClassName::editSlot(int row, int col){
if (col == 3) {
doWork(row);
}
}
Andere Tipps
Sie können setIndexWidget
dafür verwenden, finden Sie in der Qt Dokumentation weitere Informationen.
Als ein Beispiel, um einen Druckknopf in der ersten Spalte der zweiten Reihe Einbetten (ungetesteter Code):
tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);