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.
Merci de votre aide.
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; }
Partager