L'envoi du signal de méthode de classe statique dans Qt

Je suis en train de coder un statique de la fonction de callback qui est appelée souvent à partir d'une autre fonction statique à l'intérieur de la même classe. Ma fonction de callback doit emit un signal, mais pour quelque raison il omet simplement de le faire. Je l'ai mis sous un débogueur et le slot n'est jamais appelé. Cependant, quand je place le code que j'ai utilisé pour emit les données dans un non-statique de la fonction, il fonctionne. Est-il une raison pour laquelle je ne peux pas émettre un signal à partir d'une fonction statique? J'ai essayé de déclarer une nouvelle instance de la classe et d'émettre l'appel de la fonction, mais avec pas de chance.

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);
    }
};

J'ai posté quelques base de code qui illustre ce que je suis tente de faire. Je vais poster le code complet sur demande.

Edit: je vous poste le code complet car c'est un étrange scénario. http://pastebin.com/6J2D2hnM

Où voulez-vous de connecter le SIGNAL et le SLOT?
Je les connecter dans un autre .cpp fichier qui est appelé à appuyer sur un bouton. void MainWindow::on_pushButton_clicked() { tProc = new Foo(this); connect(tProc, SIGNAL(ValChanged(int)), this, SLOT(onNumberChanged(int))); tProc->start(); } ensuite, il crée une nouvelle instance de mon Foo classe et démarre le thread qui appelle la fonction de rappel.
Dans votre statique de la fonction de rappel vous créez un nouveau Foo instance et d'appel le signal. Je suppose que c'est le point où vous souhaitez émettre le signal. Comment vous connectez-vous à cette instance le logement que vous souhaitez aborder?
Je ne suis pas complètement sûr de ce que tu veux dire, mais je suppose que je l'ai branché correctement dans la MainWindow::on_pushButton_clicked() fonction. Dois-je en quelque sorte re-connecter à la fonction statique?
Dans clicked de la fonction vous avez connecté votre logement à one Foo, mais dans callback vous avez créé un autre Foo qui ne sait rien à propos de first foo. Et vous émettre le signal de cette nouvelle Foo, mais les signaux de nouveaux Foo ne sont pas connectés à toutes les machines à sous.

OriginalL'auteur user99545 | 2012-02-23