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.

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top