Seite 1 von 1

[gelöst] treeview setPalette Zeilen mehrfarbig

Verfasst: 13. März 2010 21:52
von 24dan
Hi, habe ein model und ein treeview.

FRAGE: wie bekomme die Zeilen mehrfarbig?
alternatingRowColors habe ich schon in Verwendung reicht mir aber nicht.

ZIEL:

Farbige Zeilen meines QTreeview sollen wie folgt werden:

zeilen 1 - 10 weis/gelb
zeilen 11-50 grün/blau
zeilen 51-100 rot/weis

:roll:

Verfasst: 26. März 2010 19:32
von 24dan
kann jemand wenigstens sagen ob das über geht?

Verfasst: 26. März 2010 19:38
von franzf
Zeichnen über Delegates.
Ansonsten eigenes Model und entsprechend bei data() die passende Farbe für Qt::BackgroundRole zurück geben.

Verfasst: 26. März 2010 20:49
von 24dan
okay habe mich jetzt für die data && role Methode im Model entschieden.

Code: Alles auswählen

QVariant TreeModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole && role != Qt::EditRole)
        return QVariant();

    if (role == Qt::BackgroundRole)
        return QVariant(QColor(Qt::red));

    TreeItem *item = getItem(index);

    return item->data(index.column());
}

Wie nutze ich jetzt diese Eigenschaft meines Models im NutzCode.
Ich verstehe nicht wie ich jetzt die Qt::BackroundRole nutzen kann.
:oops:

Verfasst: 26. März 2010 21:15
von 24dan
habe jetzt ne Beispiel für ItemDelegate() gefunden und es funktioniert wirklich....
Alles weitere würde ich natürlich trotzallem gerne verstehen.

hier mal der Link

http://qt.nokia.com/developer/faqs/faq. ... 774969370/

Verfasst: 26. März 2010 21:30
von franzf
Wie nutze ich jetzt diese Eigenschaft meines Models im NutzCode.
Ich verstehe nicht wie ich jetzt die Qt::BackroundRole nutzen kann.
:oops:
Nutzen tust DU das gar nicht! Die View holt sich die Daten zum Malen.
Dass es nicht geht hat einen ganz banalen Grund :P

Code: Alles auswählen

QVariant TreeModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole && role != Qt::EditRole) < --- WAS MACHST DU HIER?
        return QVariant(); // Und was passiert dann hier?

    if (role == Qt::BackgroundRole)  // Kann hier überhaupt noch was passieren?
        return QVariant(QColor(Qt::red));

    TreeItem *item = getItem(index);

    return item->data(index.column());
}
Ich denke du verstehst was ich meine :P

Verfasst: 26. März 2010 22:55
von 24dan
danke


Ohh Gott schenk grips..... :roll: