In meinem Projekt habe ich eine QTreeView
Anzeige von Elementen aus einem QStandardItemModel
. Jeder Artikel enthält Daten, die in mehreren UserRoles gespeichert sind.QTreeView UserRole anstelle von DisplayRole nach Doppelklick bearbeiten
QStandardItem* item = new QStandardItem();
item->setIcon(iconByte);
item->setData(3, Qt::UserRole+1);
item->setData(name, Qt::UserRole+2);
item->setData(data, Qt::UserRole+3);
... and so on
Wenn der Benutzer doppelklickt auf ein Element, bearbeitet eine Dialog mit zwei Zeile zeigt den Benutzer ermöglicht wird, Teile der Userrole Daten zu bearbeiten. Wenn die Bearbeitung beendet wird, durchlaufen die Bearbeitungen eine gewisse Logik und ein Anzeigename wird basierend auf den neuen UserRole-Daten generiert.
Dies wird jedoch sehr schnell sehr langweilig. Mit ständig auftauchenden Dialogen und was auch immer, ist es eine langsame und hässliche Lösung.
Ich möchte jetzt den Dialog vollständig entfernen und die Zeile Widgets WITHIN der Artikel selbst anzeigen. Wenn Sie auf ein Element doppelklicken, um es zu bearbeiten, wird standardmäßig nur ein Linienbearbeitungswidget angezeigt, um die DISPLAY-Rolle zu ändern. Ich möchte jedoch, dass zwei Zeilenänderungen die beiden USER-Rollen ändern. Und dann geht die normale Logik weiter.
Wie würde ich den Bearbeitungsbereich einer QTreeView
ändern?
Danke für Ihre Zeit!
eine zweite Verwendung Spalte ist keine Option. Der Anzeigetext ist nicht immer zwei Userrole-Daten nebeneinander. – mrg95