2009-04-16 4 views
1

Es gibt zwei QTreeViews in der Screenshot unten. Für die auf der rechten Seite, ich habe eine CSS-Anpassung hinzu:QTreeView Stylesheet Anpassung Problem mit Bildlaufleiste

setStyleSheet(
    "background-color: #EAF5FF;" 
    "alternate-background-color: #D5EAFF;" 
); 

Hinweis jedoch die Scrollbar Aussehen verändert. Es ging zum "windows" -Stil, nicht zum "windowsxp" -Stil (was der Standard ist, da ich unter Xp entwickle).

Wie kann ich die obigen Einstellungen verwenden, ohne die Darstellung der Bildlaufleiste zu ändern?

Ich benutze QT 4.5 und Windows XP.

ScreenShot

Antwort

2

Der Ratschlag der QPalette-Route funktionierte. Hier ist die Lösung:

#if 0 // this causes the problem 
    setStyleSheet(
     "background-color: #EAF5FF;" 
     "alternate-background-color: #D5EAFF;" 
    ); 
#else // this works correctly 
    QPalette p = palette(); 
    p.setColor(QPalette::Base, QColor(qRgb(0xEA, 0xF5, 0xFF))); 
    p.setColor(QPalette::AlternateBase, QColor(qRgb(0xD5, 0xEA, 0xFF))); 
    setPalette(p); 
#endif 

Beide Methoden sollten nach den Dokumenten arbeiten, so würde ich sagen, es ist ein Qt-Fehler.

Bearbeiten: Nach der Arbeit mit dieser neuen Methode in den letzten Tagen habe ich bemerkt, dass es auch eine Leistungsverbesserung geben kann.

3

Haben Sie eine der Fähigkeiten müssen die CSS-Anpassung, die Sie, über das, was gibt Ihnen direkt tun können? Um die Farben zu ändern, können Sie dies direkt mit der Palette des Widgets tun, die Ihren Stil erhalten soll.

Denken Sie auch daran, dass Stiländerungen vererbt werden. Wenn also ein Widget, das den Baum auf der rechten Seite enthält, einen anderen Stil hat als jeder Baum, der den Baum auf der linken Seite enthält, kann dies ebenfalls zu Änderungen führen.

Darüber hinaus würde ich denken, dass dies ein Qt-Bug zu sein scheint, wenn der einzige Unterschied tatsächlich das CSS-Stylesheet ist.