QItemDelegate und QpushButton sowie RichText

Alles rund um die Programmierung mit Qt
Antworten
eht16
Beiträge: 5
Registriert: 3. Mai 2007 14:57

QItemDelegate und QpushButton sowie RichText

Beitrag von eht16 »

Hi,

ich bin noch relativ neu in QT. Ich möchte in einem QTableWidget in einer Spalte RichText darstellen(also damit HTML-Code geht) und in einer anderen Spalte möchte ich gerne einen QPushButton haben(weniger wichtig).

Allerdings hab ich keine so richtige Idee wie das anstelle. Bis jetzt habe ich ein Delegate erstellt und ich denke ich muss nur die paint- und sizeHint-Methoden überschreiben.
Für die sizeHint-Methode hab ich überhaupt keine Idee. Meine aktuelle paint-Methode schaut bisher so aus:

Code: Alles auswählen

void RichTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
	if (index.column() == 0)
	{
		QVariant value = index.data(Qt::DisplayRole);
		QTextDocument *doc = new QTextDocument();
		doc->setHtml(value.toString());
		doc->drawContents(painter, option.rect);
	}
	else
		QItemDelegate::paint(painter, option, index);
}
Dann wird zwar die erste Zelle(Zeile 0, Spalte 0) in RichText dargestellt, aber die anderen Zeilen(jeweils Spalte 0) sind leer oder nicht sichtbar.

Ich vermute mein Problem liegt bei option.rect.
Hat jemand eine Idee?

Gruß,
eht16
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

1. http://qtforum.de/forum/viewtopic.php?t=4076

2. Soll der QPushButton immer dargestellt werden oder nur wenn der Eintrag akiv ist?
eht16
Beiträge: 5
Registriert: 3. Mai 2007 14:57

Beitrag von eht16 »

Danke soweit. Ich hätte erwähnen sollen, dass ich den Post bereits gelesen habe(sorry) und daraus ja auch meine aktuelle paint-Methode entstand, allerdings hört der Thread auch an meinem Problem auf.
upsala hat geschrieben: 2. Soll der QPushButton immer dargestellt werden oder nur wenn der Eintrag akiv ist?
Mit Eintrag aktiv meinst Du, ob die Zeile markiert ist(in meinem QTableWidget kann man nur ganze Zeilen markieren)?
Das ist gar nich so wichtig, ich würde es bevorzugen wenn er immer dargestellt wird, allerdings kann ich da durchaus die einfachere Implementierung bevorzugen ;-).

Gruß
eht16
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

1. Der Rest steht in der Doku...

2. Du hast zwei Möglichkeiten, entweder mit QStyle::drawControl einen Button zeichnen, oder einen Text/Image darstellen und wenn der Eintrag Aktiv ist als Widget eben einen QPushButton verwenden (So ähnlich wie hier).
eht16
Beiträge: 5
Registriert: 3. Mai 2007 14:57

Beitrag von eht16 »

upsala hat geschrieben:1. Der Rest steht in der Doku...
Sicherlich, die Frage ist nur wo ;-). Hast Du nen Tipp? Ich weiß ja, Du bist nicht der Typ, der einem ne fertige Lösung vorsetzt und das ist auch gut so, wir wollen ja alle was lernen. Aber bißchen nen kleiner Wink mit ner halben Zaunslatte wäre cool ;-).
upsala hat geschrieben:2. Du hast zwei Möglichkeiten, entweder mit QStyle::drawControl einen Button zeichnen, oder einen Text/Image darstellen und wenn der Eintrag Aktiv ist als Widget eben einen QPushButton verwenden (So ähnlich wie hier).
Danke Dir. Da werd ich ma basteln.
eht16
Beiträge: 5
Registriert: 3. Mai 2007 14:57

Beitrag von eht16 »

Also meinen PushButton hab ich mittlerweile mit drawControl gemalt. Danke für den Tipp.

Aber bezüglich des RichText-Problems bin ich immer noch nicht weiter. Hat keiner ne Idee?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Hier gibts die Lösung fix und fertig zum abschreiben...
eht16
Beiträge: 5
Registriert: 3. Mai 2007 14:57

Beitrag von eht16 »

Vielen Dank, das is super.
Antworten