Seite 1 von 1

QT Layouts und CSS

Verfasst: 12. November 2009 08:28
von mutex
Hallo zusammen,

ich habe eine Frage bezüglich Layouts. Die für GUI Designs definierten QLayouts erfüllen ja die Standards der verschiedenen Betriebssysteme (was ja auch korrekt so ist). Dennoch suche ich eine Möglichkeit diese per CSS Stylesheet (externes Stylesheet) editierbar zu machen. Mein Problem liegt darin, dass die Anwendung bei einer kleinen Bildschirmauflösung auf dem Monitor darstellbar sein soll. Meine Idee war die über externe Stylesheets zu realisieren.
Gibt es eine Möglihkeit ein z.B. QFormLayout per Stylesheet anzusprechen. Wenn ja, wo muss ich in der Doku suchen ;-)

Danke für die Infos, Grüße

Verfasst: 12. November 2009 09:03
von AuE
Laout glaub ich eher weniger aber du kannst widgets verändern:
http://doc.trolltech.com/4.3/stylesheet-examples.html

Verfasst: 12. November 2009 11:01
von mutex
Hi,

danke für die Antwort. Ja die Layouts über CSS manipulieren ist auch denke ich mal nicht vorgesehen, da sie ja Standarts erfüllen sollen. Anpassungen von Widgets per CSS funktioniert super, nur leider habe ich keinen Zugriff auf z.B. das padding, da diese Eigenschaft ja von den Layouts gesteuert wird.

Aber vielleicht gibts ja doch was um diese zu überschreiben, oder einen Trick mit dem ich an die Layouteigenschaften per CSS komme?

Verfasst: 12. November 2009 14:35
von AuE
Dann hast meinen Link net gelesen ;-)

siehe bei der Menubar:

QMenuBar::item {
spacing: 3px; /* spacing between menu bar items */
padding: 1px 4px;
background: transparent;
border-radius: 4px;
}

Verfasst: 12. November 2009 15:09
von mutex
Hallo :)

doch doch, hab deinen Link gelesen, aber ich glaube ich hab mein problem nicht ganz richtig beschrieben.
Zunächst, du hast recht, die padding Eigenschaft gibt es dort schon. Das kommt daher das QMenuBar von QWidget abgeleitet ist und somit auch die Style - Eigenschaften von QWidget erbt.

Was ich benötige wäre folgendes. Zum erstellen der GUI gibt es seitens QT vorgefertigte Layouts ( QGridLayout, QBoxLayout, ... usw). Diese Layouts haben im Designer Style - Eigenschaften wie "LayoutTopMargin". Das wären die Eigenschaften, die ich gerne per CSS ansprechen würde.

Warum es nicht funktioniert weiß ich. Die vorgefertigten Layouts sind von QLayout und weiter von QObject abgeleitet und haben deswegen keine Stylesheet Unterstützung. Aber ich würde sie dennoch gerne per Stylesheet überschreiben.
Grund ist die Darstellung einer Anwendung mit vielen Informationen auf einer kleinen Bildschirmauflösung unter verschiedenen Betriebssystemen.

So jetzt hoffe ich, das ich es nun richtig beschrieben habe, und bitte korrigieren wenn ich was falsches erzählt habe.
:wink:

Verfasst: 12. November 2009 15:44
von AuE
Hehe.... ;-)

Ok was du machen kannst is aber die margins der Widgets zu verändern...

Code: Alles auswählen

QGroupBox {
     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                       stop: 0 #E0E0E0, stop: 1 #FFFFFF);
     border: 2px solid gray;
     border-radius: 5px;
     margin-top: 1ex; /* leave space at the top for the title */
 }

 QGroupBox::title {
     subcontrol-origin: margin;
     subcontrol-position: top center; /* position at the top center */
     padding: 0 3px;
     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                       stop: 0 #FFOECE, stop: 1 #FFFFFF);
 }
Ich weiss das dich das nicht zufrieden stellt ;-)
Aber das das einzige was mit einfällt-du kannst nunmal mit den Styöesheets nur Widgets verändern,keine Layouts. Das heisst dein einziger weg ist der von mir beschriebene auch wenn der dir nicht hilft das spacing in deinemlayout wett zu machen!

EDIT:

Schau dir doch nochmal das hier an....und hier die Attribute ....
http://doc.trolltech.com/4.2/stylesheet.html

Verfasst: 12. November 2009 15:57
von mutex
Hi nochmal,

okay ich hatte gehofft man könnte die Vorteile von Layouts und Stylesheets irgendwie vereinen, aber wenn mans genau sieht, ist die klare Trennung schon richtig.
Ich entwickel dann mal einen Plan B und tricks mir was zusammen.

Danke nochmal für deine Hilfe

Grüße

Verfasst: 12. November 2009 16:08
von AuE
Was du probieren kannst...mach einfach nen layout...spacing 9 oder größer und pack da paar btns rein. auf knopfdruck setzt du der app nen stylesheet mit spacing 0 QWidget{spacing =0;}
weiß aber net was dan passiert... muss selbst erst testen

Verfasst: 12. November 2009 16:19
von AuE
neee geht net ;-)steht auch in den docs

Verfasst: 12. November 2009 16:31
von mutex
Hau man, hab das auch grad negativ getestet ;) Aber hey, Besten Dank für deine Mühe!

Grüße