IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Qt5 & QtConcurrent


Sujet :

Qt

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Qt5 & QtConcurrent
    Bonjour,

    Je travaille sur un mini projet en Qt5 et je fais appel à QtConcurrent::run() pour bloquer entre autre le programme en attendant la fin de l’exécution d'une fonction.

    J'ai cherché un peu sur le net et j'ai trouvé que la syntaxe ce fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MyClass : public QObject
    {
        Q_OBJECT
    public:
     
        constructeur(), ~destructeur();
        void send( all parametres );
     
    ...
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void MainWindow::Function()
    {...
     MyClass* instance = new MyClass( "", "", "", 0, 0);
     
    if( condition )
      {
       QFuture<void> future = QtConcurrent::run(instance, &MyClass::send, param1, param2, ...);
       future.waitForFinished();
      }
    ...                               
    }
    Mais à la compilation je reçois l'erreur suivante:

    F:\Qt\5.2.1\mingw48_32\include\QtConcurrent\qtconcurrentstoredfunctioncall.h:-1: In instantiation of 'QtConcurrent::VoidStoredMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::VoidStoredMemberFunctionPointerCall5(T (Class::*)(Param1, Param2, Param3, Param4, Param5), Class*, const Arg1&, const Arg2&, const Arg3&, const Arg4&, const Arg5&) [with T = void; Class = Smtp; Param1 = const QString&; Arg1 = QString; Param2 = const QString&; Arg2 = QString; Param3 = const QString&; Arg3 = char [20]; Param4 = const QString&; Arg4 = QString; Param5 = QStringList; Arg5 = QStringList]':
    F:\Qt\5.2.1\mingw48_32\include\QtConcurrent\qtconcurrentrun.h:303: required from 'QFuture<T> QtConcurrent::run(Class*, T (Class::*)(Param1, Param2, Param3, Param4, Param5), const Arg1&, const Arg2&, const Arg3&, const Arg4&, const Arg5&) [with T = void; Class = Smtp; Param1 = const QString&; Arg1 = QString; Param2 = const QString&; Arg2 = QString; Param3 = const QString&; Arg3 = char [20]; Param4 = const QString&; Arg4 = QString; Param5 = QStringList; Arg5 = QStringList]'
    Merci de votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Rebonjour;

    Au fait après une consultation sur le web, j'ai remarqué que si la fonction a 5 paramètres ou plus, il faut écrire quelques chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QFuture<void> future = QtConcurrent::run(instance, std::bind1st(&MyClass::send, param1, param2, ...));
    bien sur en incluant le <functional> et rajoutant le using name space std dans mon fchier .cpp je reçois cette erreur à la compilation:

    erreur : no matching function for call to 'bind1st(void (MyClass::*)(QString, int, double), QString&, int&, double&)'
    QFuture<void>future = QtConcurrent::run(ptr,std::bind1st(&MyClass::send, sss, iii, ddd));
    ^

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo