El problema es que cuando utiliza un puntero a la función miembro, necesita proporcionar de alguna manera el parámetro this
también (es decir, el objeto sobre el que se debe llamar a la función miembro).
La sintaxis para esto es bastante difícil si no lo ha usado antes. Puede ser bueno leer http://www.parashift.com/c++-faq-lite/pointers-to-members.html.
Supongamos que tiene una clase Dog
y una función Dog::walkTheDog(int howlong_minutes)
. A continuación, debería ser capaz de utilizar std::bind1st
y std::mem_fun
para que sea adecuado para QtConcurrent::run
:
Dog dog;
// Walk this dog for 30 minutes
QtConcurrent::run(std::bind1st(std::mem_fun(&Dog::walkTheDog), &dog), 30);
std::bind1st(std::mem_fun(&Dog::walkTheDog), &dog)
devuelve un objeto de tipo función que se ha unido a la función miembro de un perro en particular. A partir de ese punto, puede usarlo de forma similar a como lo haría con una función independiente.
Tenga en cuenta que si bien es posible emitir una señal en un hilo, utilizando cualquiera de los métodos, no puede crear widgets. Solo el hilo principal de la GUI puede. Además, es probable que el hilo de la GUI principal deba procesar la señal. – CodeLurker