QMetaObject::invokeMethod et type de connexion
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::DirectConnection, 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:
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.