Próbuję kodować statyczną funkcję zwrotną, która jest często wywoływana z innej funkcji statycznej w obrębie tej samej klasy. Moja funkcja oddzwaniania musi mieć sygnał, ale z jakiegoś powodu po prostu tego nie robi. Podłączyłem go do debuggera i slot
nigdy nie jest wywoływany. Jednak po umieszczeniu kodu użyłem do emit
danych w funkcji niestatycznej działa. Czy istnieje powód, dla którego nie mogę emitować sygnału z funkcji statycznej? Próbowałem zadeklarować nową instancję klasy i wywołać funkcję emitującą, ale bez powodzenia.Wysyłanie sygnału z metody klasy statycznej w 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);
}
};
Mam opublikowany podstawowy kod, który pokazuje, co próbuję zrobić. Będę pisać pełny kod na życzenie.
Edytuj: Publikuję pełny kod, ponieważ jest to rodzaj dziwnego scenariusza. http://pastebin.com/6J2D2hnM
Gdzie można podłączyć sygnał i SLOT? – Nobody
Łączę je w osobnym pliku '.cpp', który wywoływany jest przez naciśnięcie przycisku. 'void MainWindow :: on_pushButton_clicked() { tProc = new Foo (this); connect (tProc, SIGNAL (ValChanged (int)), to, SLOT (onNumberChanged (int))); tProc-> start(); } 'następnie tworzy nowe wystąpienie mojej klasy' Foo' i uruchamia wątek, który wywołuje funkcję zwrotną. – user99545
W swojej statycznej funkcji wywołania zwrotnego tworzysz nową instancję Foo i wywołujesz sygnał na niej. Przypuszczam, że jest to punkt, w którym chcesz emitować sygnał. Jak połączyć to wystąpienie z gniazdem, które chcesz rozwiązać? – Nobody