Bonjour,

J'utilise QTconcurrent map qui appel le thread downloadImages dans lequel je fait un appel a invokeMethod et je voulais savoir pourquoi le slot que je veux appeler (SaveImages)
dans celui ci ne s'appelle que quand je met le type de connection à Qt:irectConnection, mais ne fonctionne pas avec les types de connections suivantes,
Qt::QueueConnection et Qt::AutoConnection.

downloadImages est une fonction statiques qui n'est pas dans la classe, en la mettant dans la calsse ca ne fonctionne pas aussi.

J'utilise aussi un singleton comme TextHtml::getInstance() car le mot clé this ne fonctionne pas dans une fonction statique.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
QVector<QString> qUrl;
...
...
 QFutureWatcher<void> futureWatcher;
 futureWatcher.setFuture(QtConcurrent::map(qUrl, &downloadImages));
futureWatcher.waitForFinished();
 
static void downloadImages(const QString & url)
{   
 
     bool ret = 0;
     ret = QMetaObject::invokeMethod(TextHtml::getInstance(), "saveImages", Qt::DirectConnection, Q_ARG(const QString&, url));
}
 
void TextHtml::saveImages(const QString & url)
{    
    qDebug() << url;
 
}
Merci de votre aide.