[Qt] MouseOver-Effekte in QListWidget
-
Ich wollte eine Art Linkliste realisieren. Also simple Textlinks die bei einem MouseOver unterstrichen und blau werden. Mein erster (naiver) Versuch war ein QListWidget mit entsprechendem StyleSheet für den Effekt... aber irgendwie will das nicht
Als Stylesheet hab ich folgendes versucht:
QListView::item:hover { text-decoration:underline; color:blue; }
war nix... Text wird blau, aber nicht unterstrichen
auch ein gradient wie im Beispiel würde funktionieren.
Testweise hab ich auch folgendes mal versucht:
QListView::item:hover { font-weight:bold; } // und QListView::text:hover { font-weight:bold; }
auch keine Reaktion...
Hat jemand sowas schon mal versucht oder kann mir eine Alternative zum QListWidget empfehlen, mit der es einfacher möglich wäre? (das hat nämlich noch den Nachteil, dass der aktuell ausgewählte Eintrag immer diesen grauen Selektionsrahmen hat, den ich nicht haben will aber auch nicht wegbekomm)
Eigenes Widget wär ne Möglichkeit, aber die Arbeit will ich mir erstmal ersparen
-
Laut Qt-Doku sind StyleSheet bei Custom-Styles noch nicht unterstützt, es wird aber daran gearbeitet. Wenn du also keinen mit Qt gelieferten Style verwendest hast du schlechte Karten.
Ansonsten wäre ein eigenes QItemDelegate das Einfachste. Einfach option.state nach Hover befragen und entsprechend zeichnen.
-
wie kommst du drauf, dass ich ein Custom Style verwenden würde
das mit dem Delegate klingt hilfreich, wobei noch immer das Problem mit dem Fokusrahmen bleibt
-
zwutz schrieb:
wie kommst du drauf, dass ich ein Custom Style verwenden würde
k.A., weil text-decoration nicht geht?
"Oxygen" ist auch schon so einer. Oder QtCurve.das mit dem Delegate klingt hilfreich, wobei noch immer das Problem mit dem Fokusrahmen bleibt
Das sollte aber auch durch den Delegate gemalt werden (QStyle::State_HasFocus). Plasma (kde-library) hat auch nen eigenen Delegate für das "Kickoff"-Menu (u.a.), der beim Hover nen eigenen zarten Rahmen zeichnet und dann eine zusätzliche Beschreibung einblendet.
Wäre ja doof, wenn man zwar Items zeichnen könnte, aber immer noch nicht volle Kontrolle über die Darstellung bekommen würde