Seite 1 von 1
QTableView Delegate nur bestimmte Zeillen
Verfasst: 13. April 2011 16:58
von dazedly
Ich hab ein delegate erstellt und möchte dieses jetzt nur für bestimmte Zellen benutzen, aber leider finde ich nur Methoden um ganze Spalten, oder ganze Zeilen zu setzen.
Verfasst: 13. April 2011 17:24
von upsala
Lass doch das Delegate entscheiden, ob es seine Methoden oder die der übergeordneten Klasse aufrufen soll.
Verfasst: 13. April 2011 17:26
von dazedly
Oh danke... gar nicht so weit gedacht

Verfasst: 14. April 2011 11:19
von dazedly
Na ja doch so einfach ist es jetzt doch nicht

Ich kann zwar im delegate sagen, wie aussehen soll, aber ich muss wissen anhand der Daten wissen, wie es dar gestellt werden soll. Ich hab jetzt versucht über den Parent (ist das Model) mit der Methode "isEditable()" das Aussehen zu bestimmen. Nur leider führt das immer zu einem Segfault. Ich müsste den Status aber irgendwie anbfragen können.
Code: Alles auswählen
QStandardItemModel *mod = (QStandardItemModel*) this->parent();
qDebug() << this->parent()->metaObject()->className();
if(!mod->item(index.row(), index.column())->isEditable())
{
qDebug() << "cant edit";
painter->setBrush(QBrush("grey"));
}
QStyledItemDelegate::paint(painter, option, index);
Verfasst: 14. April 2011 12:13
von archer
Ich würde eher index.model() verwenden und nicht über den parent gehen.
Wenn du nur die Hintergrundfarbe ändern willst, solltest du dir mal die verschiedenen Roles ansehen, z.B Qt::BackgroundRole.
Dann kann dein Modell entscheiden mit welcher Farbe die Zelle dargestellt werden soll.