Seite 1 von 1

QtConcurrent: blockingMap: no matching function for call

Verfasst: 15. August 2009 19:19
von qweide
Hi!

(Crosspost mit http://www.qtcentre.org/forum/f-newbie- ... 23333.html)

Ich habe das Map-Beispiel von Qt modifiziert, um echte Bilder mit guter Performance zu verkleinern.

Die scale-Funktion muss Zugriff auf die GUI haben, um von dort Skalierungsfaktoren und so zu lesen (oder kriege ich die anders übergeben?). Die CPP-Datei habe ich also modifiziert:
QString MainWindow::scale(const QString &filename)
{
...
}
Dadurch habe ich es auch der Headerdatei hinzugefügt, damit er wenier meckert:
...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
QString scale(const QString &filename);
...
Der Aufruf nach wie vor
QtConcurrent::blockingMapped(images, scale);
Ich bekomme diese Fehlermeldung:
mainwindow.cpp:85: error: no matching function for call to `blockingMapped(QList<QString>&, <unknown type>)'
Die Frage war, warum er die Funktion nicht mehr findet. Die Tipps aus dem anderen Thread helfen mir leider nicht :(. Könnte sich das vielleicht jemand kurz mal angucken?
Danke für jeden Hinweis :).

qweide

Verfasst: 16. August 2009 10:10
von Christian81
Deine scaled()-Funktion ist in einer Klasse aber nicht static. Das kann so nicht gehen.

Verfasst: 16. August 2009 10:15
von qweide
Danke erst mal für die Antwort! :)
Ich habe schon mal versucht, das static zu machen, aber das ging schief: Er hat dann einen anderen Fehler gebracht :(. Ich weiß leider nicht mehr, welchen, weil ich es beim Probieren noch weiter verhunzt habe inzwischen...

Könntest du den Anhang kurz anschauen? Ist für jemanden, der sich mit der Materie auskennt sicher weit einfacher als für mich Anfänger :cry: .

Danke!
qweide

Verfasst: 16. August 2009 10:23
von Christian81
Aus einer statischen Funktion kann man keine nicht-statischen Memberfunktionen aufrufen. Das was Du machen willst geht wohl nur per http://doc.trolltech.com/4.5/qtconcurre ... on-objects