Labels verzerren Hintergrundbild von Window

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Shaldy
User
Beiträge: 123
Registriert: Sonntag 2. März 2008, 22:49

Hey Leute!

Mal wieder ein Problem...
Ich habe im Creator eine Ressourcendatei erstellt, in der ich ein Bild speichere, welches als Hintergrund eines Finsters herhalten soll. Das Bild ist ein Verlauf von oben nach unten, grau in weiß.
Ich mache folgendes:
Klick in das Fenster -> Rechtsklick -> Stylesheet ändern -> Klick auf den kleinen Pfeil rechts von "Reesource hinzufügen" -> image.
Dann wähle ich das Bild aus und alles ist in Ordnung mit Ausnahme davon, dass der Verlauf (der eig von oben nach unten gehen soll) bei allen Labels von unten nach oben geht.

Woran liegt das?

Screen:

Bild
Dies ist keine Signatur!
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Du suchst das Attribut border-image --> http://doc.trolltech.com/qq/qq20-qss.ht ... ablestyles

Wobei Qt Verläufe auch selbst erzeugen kann, was mitunter besser aussieht, Bsp:

Code: Alles auswählen

QPushButton {
color: white;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #555, stop: 0.1 #999, stop: 0.49 #777, stop: 0.5 #666, stop: 1 #777);
border: 1px solid #333;
}
Edit: Upps, dachte Du meinst den Login-Button. Hab jetzt erst gesehen, das da noch was hinter den QLabels ist... :oops:
Shaldy
User
Beiträge: 123
Registriert: Sonntag 2. März 2008, 22:49

Ich habs am Anfang auch mit Background-Color versucht und dann eben der Gradient, aber dann waren ALLE Widgets davon betroffen.

Ich hab das Bild jetzt in die Ressource IcenRes.qrc gepackt, welche auch noch von einem anderen Widget genutzt wird. Die qrc Datei existiert auf jeden Fall, aber ich bekomme immer den ImportError Cant find Module named iconres_rc, wenn ich den über pyuic generierten Code ausfühern will...

Woran liegt das jetzt wieder?

EDIT: Hab das Problem mit der Ressource hingekriegt, aber das Hintergrundbild wird immernoch kopiert und in allen Widgets neu angezeigt...
Dies ist keine Signatur!
lunar

Du verwendest wohl einfach die falschen Selektoren. Zeige doch mal das komplette Stylesheet, oder lade am besten gleich die zu Deiner GUI gehörende UI-Datei im Pastebin hoch.

Wenn Du den Farbverlauf nur für den Hintergrund möchtest, musst Du einen entsprechenden Selektoren verwenden. Dem Bildschirmabbild ist ja zu entnehmen, dass Du ein QDialog erstellst, also wäre der passende Selektor auch "QDialog". Die Beschriftungen haben normalerweise keinen Hintergrund, und lassen daher einfach den Farbverlauf des Hintergrunds durchscheinen. Andere Steuerelemente wie Knöpfe definieren dagegen ihren eigenen Hintergrund, und sind vom Farbverlauf daher nicht betroffen.

Im Übrigen ist es sinnvoller, Qt-eigene Farbverläufe anstelle von Hintergrundbildern zu verwenden.
Shaldy
User
Beiträge: 123
Registriert: Sonntag 2. März 2008, 22:49

Han die UI Datei grade nicht da. Ich erkläre einfach ganz genau, was ich mache:

Ich Drücke im QtCreator Strg + n. Darauf hin wähle ich QDialog hone Buttons und dann Neu von Vorlage. Der Dialog erscheint, ich erstelle ein paar lineEdits, Labels und Buttons.
Nun wähle ich den QDialog als markiertes Widget zum bearbeiten (also, dass ich z.B. rechts den Objektnamen ändern kann). Nun mache ich Rechtsklick, Stylesheet bearbeiten. Dann gehe ich auf Gradient hinzufügen -> Background Color. Und dann den schwarzweißen Gradient.

Nun sind alle Widgets in diesem Style doch wenn ich z.B. den Stylesheet eines Buttons ansehe, steht da garnichts...

Das selbe mit dem Hintergrundbild.
Dies ist keine Signatur!
lunar

@Shaldy: Wenn ich Deiner Beschreibung folge, dann erhalte ich ein Style Sheet, welches nicht nur für den QDialog selbst, sondern für alle darin enthaltenen Steuerelemente gilt. Um das zu ändern, musst Du die Hintergrundfarbe mit einem entsprechenden Selektor nur auf den QDialog selbst einschränken. Was Selektoren sind, wie sie funktionieren, und wie Du sie anwenden kannst, steht in der Dokumentation.
Shaldy
User
Beiträge: 123
Registriert: Sonntag 2. März 2008, 22:49

Vielen Dank, habs jetzt verstanden.
Dies ist keine Signatur!
Antworten