Seite 1 von 1

[gelöst] Textformatierung im TreeModel

Verfasst: 27. Januar 2014 22:05
von MichaelS
Hallo,

ich habe ein Problem, für dessen Lösung mir im Moment eine Idee fehlt: Ein TreeModel, stellt die Daten ungefähr so dar:

Überschrift 1
|
---- Satz 1
|
---- Satz 2
Überschrift 2
|
--- Satz 1
|
--- Satz 2

Nun soll in der Überschrift jeweils der erste Buchstabe ( und nur der ) unterstrichen dargestellt werden. Für einen Lösungshinweis wäre ich dankbar.

Vielen Dank und viele Grüße

Michael

Re: Textformatierung im TreeModel

Verfasst: 28. Januar 2014 12:15
von sigvdr
Die Lösung nennt sich Delegate z.B. QStyledItemDelegate. Lies die mal die Doku dazu durch.
Gruß Sig

Re: Textformatierung im TreeModel

Verfasst: 28. Januar 2014 12:45
von MichaelS
Hallo,

vielen Dank für den Hinweis. Zwischenzeitlich hatte ich das Problem gelöst, in dem ich die Paint-Methode von QItemDelegate überschrieben habe. Dabei wird bei den Überschriften HTML-Code gerendert und bei allen anderen wird die Standard-Paint-Methode aufgerufen. Damit kann ich im Datenmodel bei den Überschriften HTML-Tags einfügen, um bestimmte Buchstaben zu unterstreichen, die dann im Treeview auch korrekt dargestellt werden.

Code: Alles auswählen

void myDelegate::paint(QPainter *painter,
                            const QStyleOptionViewItem &option,
                            const QModelIndex &index) const
{
    if ( !index.parent().isValid() )
    {
        QLabel *label = new QLabel;
        label->setText(index.data().toString());
        label->setTextFormat(Qt::RichText);
        label->setGeometry(option.rect);
        label->setStyleSheet("QLabel { background-color : transparent; }");

        painter->translate(option.rect.topLeft());
        label->render(painter);
        painter->translate(-option.rect.topLeft());
    } else
    QItemDelegate::paint( painter,option,index );
}