Frage

Ich habe einige Fragen über Qt-Stylesheet-Funktionalität. Es ist wirklich toll, aber es fühlt sich an wie das Feature zu lange noch nicht da ist, nicht wahr? Es ist bei weitem der einfachste Weg, um Stil meine GUI though.

  1. Ist es möglich, Farbe hinzufügen in den Formatvorlagen Fading? Jedes Mal, wenn die Maus schwebt über einen bestimmten Widget, ich will nicht, dass es Hintergrundfarbe abrupt ändern, nur verblasst in die neue Farbe in 200ms oder so etwas. Gibt es eine schöne Möglichkeit, für diese, oder muss dies geschehen Code-weise sein?

  2. Kann ich einen Gradienten 2D? Ich weiß, wie jetzt die 1D-Gradienten verwenden, können Sie Farbe nach und nach über eine Achse (oft entweder horizontal oder vertikal) ändern können. Ich möchte eine zweiten Gradient obendrein an, die hat ein einen niedrigen Alpha-Wert zum Beispiel hat. Also, wenn Ihr Gefälle geht von grün (oben) bis rot (unten), würde ich auch wie es von transparent zu gehen (links) bis Weiß (rechts).

  3. Qt hat CSS-Selektoren für Typen (z QPushButton) und für IDs (z #mywidgetname), aber ich habe nicht gefunden, einen Weg oder Setklassen auszuwählen. Ich habe eine Reihe von QFrames zum Beispiel, und bis zu einem gewissen Teilmenge würde Ich mag einen bestimmten Stil hinzuzufügen. Soll ich meine Frames alle die gleiche (gleiche ID) nennen? Hört sich schlecht an. Aber die Auswahl auf ihre Art (QFrame) ist auch nicht richtig ...

Danke!

War es hilfreich?

Lösung

  1. Nicht mit CSS, die ich kenne. Allerdings Qt einige schöne Demos mit verschiedenen Techniken hat (mit der Animations-Framework), siehe zum Beispiel der Demos / Beispiele Browser.

  2. Sie können sich wahrscheinlich erreichen, was Sie in # 2 sollen durch die folgende Konstruktion mit relativen Koordinaten der Endpunkte mit:

    qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.273, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))
    

    Qt Designer haben einen schönen Editor für Gradienten (und für CSS im Allgemeinen), können Sie mit diesem spielen und sehen, was es kommt mit und verwendet, die für Inspiration.

  3. Nicht ganz sicher, wie man am besten dieses Problem lösen, aber Sie können mehrere Übereinstimmungen vor der gleichen Regel setzen, so können Sie haben:

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    

Andere Tipps

Ich weiß, das ist eine ganz alte Frage, aber ich hatte vor kurzem ein ähnliches Problem.

Wie auch immer, für "3." Ich fand Sie ein „Auswahlmenü“ in der qss verwenden und nur den Eigenschaftswert auf dem entsprechenden Widgets festgelegt.

z. in C ++ Code:

widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

dann im qss:

QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

Dann kann jede QWidget (oder abgeleitete Klasse) Instanz mit der „styleclass“ Eigenschaft auf „MyCustomLAF“ wird die Farbe: lila Stil angewandt. Verzeihen Sie mir, wenn die folgende Erklärung ein wenig verwirrend oder technisch nicht korrekt ist, aber ich bin was bedeutet, dass die Eigenschaft „styleclass“ ist das, was Qt eine „dynamische Eigenschaft“ Anrufe, die (in meinen Worten) bedeutet eine Eigenschaft, die zu einer QObject Instanz hinzugefügt wird zur Laufzeit, ohne in dem "Meta-stuff" registriert werden, um die Q_PROPERTY Makro.

Sie können auch alle QFrames für bestimmte Eltern wählen

#ParentName > QFrame alle QFrames auswählen, die Kinder von #ParentName

sind

#ParentName QFrame wählt alle QFrames in #ParentName enthalten und Kinder

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top