Seite 1 von 1

QtConcurrent - Access violation

Verfasst: 13. Juli 2008 13:57
von tomf
Ich würde gerne per QtConcurrent Bilder in seperaten Threads laden und skalieren. Da ich auch das Laden auslagern will hab ich mir eine Mini-Klasse gebastelt die den Pfad (QString) + ein QImage haltet. Im GUI-Thread setze ich nun den Pfad und rufe dann per QtConcurrent::map meine Funktion auf die das Bild laden soll.

Jetzt habe ich aber das Problem, dass ich scheinbar keinen Zugriff auf den Pfad (QString) habe. Sobald ich das Ding in meiner Funktion (die ja in einem seperaten Thread läuft) angreifen will bekomme ich eine Access violation. Einzig das QImage meckert nicht. Auch QFileInfo habe ich schon probiert -> gleiches Problem.

Code: Alles auswählen

class LoaderItemImage
{
public:
	LoaderItemImage(QString path);
	~LoaderItemImage();

public:
	QImage image;
	QString path;
};
und

Code: Alles auswählen

QList<LoaderItemImage> test;
LoaderItemImage *image1 = new LoaderItemImage("c:\test.jpg");
LoaderItemImage *image2 = new LoaderItemImage("c:\test.jpg");
test.append(*image1);
test.append(*image2);

QFuture<void> computation = QtConcurrent::map(test, loadImage);
und

Code: Alles auswählen

void loadImage(LoaderItemImage & image)
{
	qDebug() << image.path;
}

Weiss jemand was ich falsch mache? Geht das überhaupt so wie ich mir das vorstelle?

Verfasst: 13. Juli 2008 20:55
von tomf
Ok habs anders gelöst. Verwende nun ein mapped anstatt von map.