QT Layouts und CSS

Alles rund um die Programmierung mit Qt
Antworten
mutex
Beiträge: 21
Registriert: 25. August 2009 10:28

QT Layouts und CSS

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Laout glaub ich eher weniger aber du kannst widgets verändern:
http://doc.trolltech.com/4.3/stylesheet-examples.html
mutex
Beiträge: 21
Registriert: 25. August 2009 10:28

Beitrag 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?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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;
}
mutex
Beiträge: 21
Registriert: 25. August 2009 10:28

Beitrag 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:
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
mutex
Beiträge: 21
Registriert: 25. August 2009 10:28

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

neee geht net ;-)steht auch in den docs
mutex
Beiträge: 21
Registriert: 25. August 2009 10:28

Beitrag von mutex »

Hau man, hab das auch grad negativ getestet ;) Aber hey, Besten Dank für deine Mühe!

Grüße
Antworten