QTableView Delegate nur bestimmte Zeillen

Alles rund um die Programmierung mit Qt
Antworten
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

QTableView Delegate nur bestimmte Zeillen

Beitrag 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.
Zuletzt geändert von dazedly am 14. April 2011 11:11, insgesamt 2-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Lass doch das Delegate entscheiden, ob es seine Methoden oder die der übergeordneten Klasse aufrufen soll.
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag von dazedly »

Oh danke... gar nicht so weit gedacht :D
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag 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);
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag 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.
Antworten