Hallo,
also ich habe ein QTableView mit einem zugehörigem QStandardItemModel erstellt. Daran will ich Delegates verweden. So wie aus der Dokumentation ersichtlich wird, kann ich einen Delegate entweder für das gesamte Model, für eine ganze Zeile oder eine ganze Spalte setzen.
Gibt es denn keine Möglichkeit einen bestimmten Delegate nur an eine Position (row, column) zu setzen??? So das ich am Ende in meiner Tabelle meinetwegen auch 3 verschiedene Delegates in einer Zeile nebeneinander habe!
DANKE.
ItemDelegate nur für bestimmten Index setzen?
So eine Funktion vermisse ich auch.
Die einzige Möglichkeit sehe ich in einem ItemDelegateProxy, der für bestimmte Zellen den eigenen speziellen ItemDelegate aufruft und für alle anderen Zelllen den standard QItemDelegate.
Du musst einfach folgende Methoden überschreiben:
Speichern kannst du die ItemDelegates in einer Map vom Typ QMap<QModelIndex(), QAbstractItemDelegate*>
Die einzige Möglichkeit sehe ich in einem ItemDelegateProxy, der für bestimmte Zellen den eigenen speziellen ItemDelegate aufruft und für alle anderen Zelllen den standard QItemDelegate.
Du musst einfach folgende Methoden überschreiben:
Code: Alles auswählen
virtual void paint ( QPainter * painter,
const QStyleOptionViewItem & option,
const QModelIndex & index ) const;
virtual QWidget * createEditor( QWidget * parent,
const QStyleOptionViewItem & option,
const QModelIndex & index) const;
void setEditorData ( QWidget * editor, const QModelIndex & index ) const;
void setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const;
für so einen ItemDelegateProxy gibts aber keine bereits vorhandene Klasse von Qt, richtig? Hab keine gefunden. Ich müsste also die Methoden des QItemDelegate überschreiben?
Kann ich den selbst erstellten ItemDelegate auch unterschiedliche EditorWidgets anzeigen lassen? (abhängig davon, was in einer Tabelle zum Beispiel eine Spalte daneben für ein Wort steht (int/string/bool)
Kann ich den selbst erstellten ItemDelegate auch unterschiedliche EditorWidgets anzeigen lassen? (abhängig davon, was in einer Tabelle zum Beispiel eine Spalte daneben für ein Wort steht (int/string/bool)