StylSheet Elemente

Verschiedenes zu Qt
Antworten
ZSchneidi
Beiträge: 65
Registriert: 16. Juli 2009 13:30

StylSheet Elemente

Beitrag von ZSchneidi »

Hi, ich hoffe das Thema is noch nicht in Grund und Boden geredet worden,
ich hab zwar schon viel zu dem Thema hier gefunden, aber eben noch nicht die Lösung gefunden.

Ich bin gerade dabei mein Layout umzu"stylen".

Dabei hab ich ein paar Probleme, die richtigen Elemente zu adressieren.

Ein Beispiel:

Die QToolbox
Da hab ich bisher die

QToolBox::tab {
...
}
QToolBox{
...
}

adressieren können, die Tabs sind klar, die QToolBox selbst bedient die Grundfläche des Widgets.

Was ich jetzt noch brauche sind die eigentlichen Items der QToolBox, sprich die Flächen die geöffnet werden, wenn ich auf einen Tab klicke.

Wie kann ich jetzt rausfinden, welche Elemente ich an den einzelnen Widgets für das StyleSheet zur verfügung habe ?
Da hab ich bisher noch nichts zu gefunden.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Du könntest alle Items durchlaufen und ihnen ein Stylesheet zuweiden.
z.B.

Code: Alles auswählen

for (int i = 0; i < myToolBox->count(); i++)
    myToolBox->widget(i)->setStyleSheet("....");
ZSchneidi
Beiträge: 65
Registriert: 16. Juli 2009 13:30

Beitrag von ZSchneidi »

Ok, wäre wohl eine möglichkeit.

Ich arbeite aber mit dem Designer, dementsprechend machen ich das
komplette Layout nicht im Quellcode.

Ich müsste es also direkt adressiert kriegen.

Ich hab auch schon überall gesucht um einfach mal eine auflistung aller elemente der einzelnen Widgets zu kriegen.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Auch schon mal

Code: Alles auswählen

QToolBox QWidget{
...
}
oder

Code: Alles auswählen

QToolBox > QWidget {
...
}
probiert?
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Ich hab auch schon überall gesucht um einfach mal eine auflistung aller elemente der einzelnen Widgets zu kriegen.
QWidgets sind auch QObjects
und alle widgets sind sicher in der Objecthirarchie, wenn du mit dem Designer arbeitest.
QList<T> QObject::findChildren ( const QString & name = QString() ) const
mit leerstring als paramter, liefert dir alle subobjecte, rekursiv !

nun noch mit einem qobject_cast testen ob es sich um nen widget handelt ...

Nicht besonders performant, aber schnell implementiert.

Besser:
deine widgets haben doch alle nen layout ??? sonst macht der designer ja weniger sinn ^^
also dir vom toplevel widget das layout geben lassen,
mit
int QLayout::count () const
und
QLayoutItem * QLayout::itemAt ( int index ) const
alle LayoutItems durchlaufen ...
QWidget * QLayoutItem::widget () testet gleich ob das ding nen widget ist ... und castet es dir entsprechend.
Wenn es nen widget ist, wieder von vorn anfangen (Rekursion) ....

Ciao ...
ZSchneidi
Beiträge: 65
Registriert: 16. Juli 2009 13:30

Beitrag von ZSchneidi »

Ok, das war schon garnicht so verkehrt, jetzt konnte ich zumindest den Stil des eigentlichen Körpers anpassen, der Stil wird dann zwar gleich auf alle Inhalte angewand, aber nur solange ich keine spezifischen Stile für die ChildWidgets definiere, das sollte mich zumindest erstmal weiter bringen.

Das hilft mir nur noch nicht wirklich beim verständnis der Thematik.

Dank dir auf jeden Fall erstmal, fall noch Jemand weiß, wo ich mich etwas schlauer machen kann, was diese Beziehungen angeht, wäre das schon sehr hilfreich.
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

Hallo,
mit dem Designer kannst Du Objecten Namen geben.
Mit QList<T> findChildren ( const QString & name = QString() ) const
kannst Du Dir Objecte suchen.

void dumpObjectInfo () und
void dumpObjectTree ()

geben mal einen guten Überblick.

tschüß
Troll.Soft
ZSchneidi
Beiträge: 65
Registriert: 16. Juli 2009 13:30

Beitrag von ZSchneidi »

Netter kniff, könnt sicherlich noch hilfreich sein, aber ein klein wenig umständlich isses schon. Nicht dass ich zu faul wäre ^^

http://doc.trolltech.com/4.4/stylesheet-reference.html

Die StyleSheet referenz hat mir hier jetz aber auch schon gut weiter geholfen. Mann muss sich zwar seine optionen zusammensuchen, aber damit hab ich bisher schon alles gefunden, was ich gesucht hab.
Antworten