Seite 1 von 1

QPixmap im style sheet - oder als Qt Resource registrieren

Verfasst: 11. September 2008 00:40
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

Verfasst: 11. September 2008 09:09
von upsala
Mit QAbstractFileEngine und QAbstractFileEngineHandler einen eigenen Handler schreiben und dann z.B. soetwas als Datei angeben: 'icon:/meins.png'

Verfasst: 11. September 2008 17:07
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.

Verfasst: 11. September 2008 17:28
von FaS
[gelöst] passt nicht mehr in den Titel. Weiß nicht wie ich den Text vereinfachen sollte, alles drin was drin sein muss..