in meinem Programm habe ich einen Thread welcher aus mehreren Grafiken eine neue Grafik erzeugen soll.
Hierzu benutze ich dort ein QPainter-Object, und zeichne damit die benötigten Teile der Grafiken in meine neue Grafik.
Das funktioniert soweit auch alles ganz prima, jedoch bekomme ich beim starten desd Programms die Meldung "QFont: It is not safe to use text and fonts outside the gui thread".
Meine Recherchen haben ergeben dass man keine QPixmaps und QFonts in ausserhalb des Main-Thread benutzen kann, aber das tue ich ja auch nicht.
In der Qt-Doku steht ausdrücklich dass man mit einem QPainter-Object in nicht-Gui-Threads auf QImage zeichnen kann (genau das was ich ja eigentlich auch mache).
Dasd ganze sieht dass so aus:
Code: Alles auswählen
void ImageMerger::run()
{
QImage newImage(500, 500, QImage::Format_ARGB32_Premultiplied);
QImage sourceImage;
if(!sourceImage.load("testbild.png", "PNG"))
qDebug() << "SourceImage could not be loaded";
sourceImage = sourceImage.copy(source);
sourceImage = sourceImage.scaled(sourceImage.size() * scale);
QPainter painter(&newImage);
painter.drawImage(insertionPoint, sourceImage);
if(!newImage.save(QString("test.png"), "PNG"))
qDebug() << "Image could not be saved";
}
Die ausserhalb der run-methode findet sonst nichts weiter statt.
Die Klasse ImageMerger ist von QThread abgeleitet.
Ich frage mich wo da der Fehler liegen könnte.
Ich benutze Qt4.1.2/X11
Vielen Dank fürs lesen schon mal im Vorraus.