QPixmap im style sheet - oder als Qt Resource registrieren

Alles rund um die Programmierung mit Qt
Antworten
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

QPixmap im style sheet - oder als Qt Resource registrieren

Beitrag von FaS »

Tachchen.

Ich würde gerne ein zur Laufzeit erstelltes Bild (QImage, QPixmap oder was auch immer) in einem style sheet verwenden.
Grund: Ich möchte für das Bildchen Farben aus QPalette benutzen.
Problem: In dem style sheet kann ich wohl nur Dateien aus dem Dateisystem oder den Qt-Ressourcen angeben, habe aber nur ein QImage.
Style sheet:

Code: Alles auswählen

QSplitter::handle:vertical {
  background-image: url(:/horizontalGrip.png);
  background-repeat: no-repeat;
  background-position: center;
}
Ich schätze ich muss das Bild irgendwie als Ressource registrieren falls soetwas möglich ist, QResource::registerResource sieht aber nicht ganz richtig aus, bzw. verstehe ich die Dokumentation nicht ganz. QRessource soll ja eigentlich nur zum Auslesen selbiger dienen?...

Hoffe jemand weiß Rat,
FaS
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Mit QAbstractFileEngine und QAbstractFileEngineHandler einen eigenen Handler schreiben und dann z.B. soetwas als Datei angeben: 'icon:/meins.png'
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag von FaS »

Wow. Komplizierter geht's ja fast garnicht ;-).
Aber immerhin interessant was so möglich ist. Diese Klassen hatte ich schonmal in der Doku gesehen (kann mich an die ZipEngine erinnern) und gleich ganz doll schnell weitergeblättert..

Aber was solls. Hab jetzt mal eine provisorische lesebefähigte BufferFileEnginge geschrieben, und open(), close(), pos(), size(), read() einfach an ein QBuffer weitergereicht. Bei fileName() hab ich vorsichtshalber einfach ohne Beachtung des QAbstractFileEngine::FileName-Parameters den Pseudo-Dateinamen zurückgegeben, weil scheinbar wird sie tatsächlich aufgerufen, wozu auch immer.
Meine QImages speicher ich dann einfach in ein solches Buffer, füge es einer globalen Liste samt Dateinamen hinzu, und voilà, ich konnte in einem style sheet erfolgreich "buffer:/horizontalGrip.png" u.a. verwenden, der zeigt tatsächlich mein erstelltes Bildchen an. :-) Erstaunlich.

Was ich aber bedenklich finde, ist der Umstand, dass nun meine Engine bei jeder Dateianfrage als erste befragt wird. Kann man die irgendwie nach hinten Stellen? Naja ist aber vielleicht auch nicht so schlimm.

Danke für den Hinweis.
FaS.
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag von FaS »

[gelöst] passt nicht mehr in den Titel. Weiß nicht wie ich den Text vereinfachen sollte, alles drin was drin sein muss..
Antworten