Qt: ganz bestimmtes Element mit Stylesheet ändern
-
Hallo,
ich würde gern ein bestimmtes Element in meinem Programm anpassen, finde aber nicht heraus, wie ich es ansprechen kann. Dass es geht, muss ich vermuten, da das Ding in anderen Programmen anders aussieht.
Ich habe ein QTableView/QListView/QListWidget/QTreeView. Wenn ich ein Element mit der Maus markiere, bildet sich ein dünner, gestrichelter, oranger Rand um das Element:
BildEntferne ich den Fokus (irgendwo hinklicken), wird der Rand grau:
BildWeiß jemand, wie ich diesen Rand mit einem Stylesheet ansprechen und ändern kann? Da es von allen mir bekannten Views geteilt wird, kann man es vermutlich per
QAbstractItemView:??? {}
für alle gemeinsam ändern.
PS: Wenn jemand auch nur den Namen dieser Umrandung weiß, damit ich danach googeln kann, wäre mir auch schon geholfen!
-
Einfach im Stylesheet als Beispiel QPushButton#nameDesButton{color:red} eingeben. "#nameDesButton" ist der ObjecName des Buttons. Sie hier
-
Ich sehe, du hast meinen Beitrag nicht mal gelesen. Danke.
-
Du hast recht ich habe nicht genau genug gelesen, sorry.
Das Rechteck ist das Fokus Rechteck. Schau mal hier ob Dir das weiter hilft. Das Beispiel bezieht sich auf ein QLineEdit, sollte aber auch auf ein QTableView/QTreeView anwendbar sein!
-
http://doc.qt.nokia.com/latest/stylesheet-reference.html
Da steht ALLES was gestyled werden kann - QAbstractItemView ist leider nicht dabei
Z.B. QTreeView:
http://doc.qt.nokia.com/latest/stylesheet-examples.html#customizing-qtreeview
Du willst an das QTreeView::item ran und z.B. selected mit nem anderen Rahmen o.Ä.
-
ScyllaIllciz schrieb:
Du hast recht ich habe nicht genau genug gelesen, sorry.
Das Rechteck ist das Fokus Rechteck. Schau mal hier ob Dir das weiter hilft. Das Beispiel bezieht sich auf ein QLineEdit, sollte aber auch auf ein QTableView/QTreeView anwendbar sein!Folgendes habe ich probiert, ohne jeglichen Erfolg.
QAbstractItemView::item:focus { border: transparent; } QAbstractItemView::item:edit-focus { border: transparent; } QAbstractItemView::item:selected:focus { border: transparent; } QAbstractItemView::item:selected:edit-focus { border: transparent; } QAbstractItemView::item:selected:active:focus { border: transparent; } QAbstractItemView::item:selected:active:edit-focus { border: transparent; }
Das Fokus-Rechteck scheint ein anderes zu sein, das erst auftaucht, wenn man ihm per Stylesheet eine Farbe zuordnet. Die gestrichelte Linie besteht unabhängig davon.
fridolin kiesewetter schrieb:
http://doc.qt.nokia.com/latest/stylesheet-reference.html
Da steht ALLES was gestyled werden kann - QAbstractItemView ist leider nicht dabei
Z.B. QTreeView:
http://doc.qt.nokia.com/latest/stylesheet-examples.html#customizing-qtreeview
Du willst an das QTreeView::item ran und z.B. selected mit nem anderen Rahmen o.Ä.Ich kenne die Dokumentation schon fast auswendig. QAbstractItemView kann per Stylesheet angesprochen werden - zumindest so, dass sämtliche abgeleiteten Klassen (TreeView, TableView und alle möglichen) nicht getrennt bearbeitet werden müssen.
Der ":selected" Pseude-State bezieht sich nicht auf den Rahmen, sondern die Markierung. Da gibt es einen feinen Unterschied - z.B. kann immer nur eine einzelne Zelle eines TableViews mit dem Rahmen versehen sein, allerdings können beliebig viele Zellen markiert sein.
":selected" ist damit nicht, was ich suche.Aber: Da ich mittlerweile ein eigenes ItemDelegate programmieren musste, habe ich der paint-Operation einfach die Möglichkeit entzogen, die gestrichelten Linien zu zeichnen. Sieht etwas seltsam aus, aber zumindest kann ich so die Farbe ausblenden.
Für Hilfe wäre ich aber trotzdem weiterhin dankbar.