Estoy intentando codificar una función de devolución de llamada estática que se llama con frecuencia de otra función estática dentro de la misma clase. Mi función de devolución de llamada necesita una señal emit
pero por alguna razón simplemente no lo hace. Lo puse bajo un depurador y nunca se llama al slot
. Sin embargo, cuando coloco el código que utilicé para emit
funciona la información en una función no estática. ¿Hay alguna razón por la que no pueda emitir una señal desde una función estática? Intenté declarar una nueva instancia de la clase y llamar a la función de emisión, pero sin suerte.Señal de envío del método de clase estática en Qt
class Foo
{
signals:
emitFunction(int);
private:
static int callback(int val)
{
/* Called multiple times (100+) */
Foo *foo = new Foo;
foo.emitFunction(val);
}
void run()
{
callback(percentdownloaded);
}
};
He publicado un código básico que demuestra lo que estoy intentando hacer. Publicare el código completo a pedido.
Editar: Estoy posteando el código completo ya que es una especie de situación extraña. http://pastebin.com/6J2D2hnM
¿Dónde conectar la señal y la ranura? – Nobody
Los conecto en un archivo '.cpp' separado que se llama al presionar un botón. 'void MainWindow :: on_pushButton_clicked() { tProc = new Foo (this); connect (tProc, SIGNAL (ValChanged (int)), esto, SLOT (onNumberChanged (int))); tProc-> start(); } 'luego crea una nueva instancia de mi clase' Foo' e inicia el hilo que llama a la función de devolución de llamada. – user99545
En su función de devolución de llamada estática, crea una nueva instancia de Foo y llama la señal sobre ella. Supongo que este es el punto donde quieres emitir la señal. ¿Cómo se conecta esta instancia a la ranura que desea abordar? – Nobody