Ich möchte ein QIconEnginePlugin schreiben, welches es mir erlaubt, beim Anlegen der Actions jeweils ein QIcon("xy.svg") im SVG Format zu laden und zu benutzen. Dazu habe ich QIconEnginePlugin und QIconEngine abgeleitet und implementiert. Konkret warte ich auf den Aufruf von QIconEngine.pixmap() und erzeuge mittels QPicture.load() ein Bild, welches in eine Pixmap umgewandelt wird. Dabei benötige ich Eure Hilfe, denn das Icon erscheint nicht. Nur ein schwarzer Fleck mit manchmal zufälligen Punkten. Die Plugin-Routinen funktionieren soweit, sprich es wird gefunden und aufgerufen.
Code: Alles auswählen
void SvgIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state)
{
QString filename = ":/images/action_connect.svg";
QPicture picture = new QPicture();
picture->setBoundingRect(rect);
picture->load(filename, "svg");
painter->drawPicture(0, 0, *picture);
painter->end();
if (picture)
delete picture;
}Ein zweites Problem stellt sich mir, da ich nicht weiss, woher die QIconEngine eigentlich Ihre Daten bekommt. Ich kann bei addFile einen Dateinamen angeben und mir merken, aber wenn ich automatisch Icons laden lasse, wird addFile() nicht explizit aufgerufen. Woher bekommt QIconEngine die Daten bzw. den Hinweis, welche Datei benutzt werden soll? Das ist irgendwie nirgends dokumentiert. Ich habe schon in qicon.cpp gestochert, aber nichts richtiges gefunden.
Ich würde mich riesig freuen, wenn mir jemand wieterhelfen kann. Auch Hinweise auf andere Sourcen, die das Problem schon gelöst haben wäre hilfreich. Danke schonmal.
E*