Callback - Threadsynchronisation



  • Hallo!

    Ich binde in mein Qt4 Projekt eine C++ Library ein, welche verschiedene Netzwerkkommunikationsdinge im Hintergrund erledigt. Jetzt kann ich mich hier auf verschiedene Ereignisse registrieren, die mir dann eine Callback-funktion aufrufen. Der Callback wird in einem eigenen Thread aufgerufen, und jetzt brauche ich eine Funktion, welche mir von dieser Funktion aus eine andere Methode aufruft, jedoch in dem Thread, in dem das zugrundeliegende Objekt erstellt wurde. Bei C# gibt es hier z.B. eine Funktion "Invoke" die eine Methode immer in dem Thread aufruft, in dem das zugrundeliegende Objekt erstellt wurde... Gibt es sowas in C++ bzw. Qt auch?

    LG Wilfried



  • Lies dir mal in der Qt Dokumentation das Tutorial zu Thrads und Signalen durch.

    http://doc.trolltech.com/4.3/threads.html



  • Ponto schrieb:

    Lies dir mal in der Qt Dokumentation das Tutorial zu Thrads und Signalen durch.

    http://doc.trolltech.com/4.3/threads.html

    Hallo!

    Hab ich bereits gemacht, und auch das QMetaObject gefunden, nur passiert da nichts, wenn ich InvokeMethod aufrufe:

    QMetaObject::invokeMethod(ui.textLog , SLOT(append(const QString & text)),
    Q_ARG(QString, "test"));

    Eigentlich sollte mir jetzt das Textedit etwas anzeigen, leider passiert gar nichts...

    LG Willi



  • hafwil schrieb:

    Ponto schrieb:

    Lies dir mal in der Qt Dokumentation das Tutorial zu Thrads und Signalen durch.

    http://doc.trolltech.com/4.3/threads.html

    QMetaObject::invokeMethod(ui.textLog , SLOT(append(const QString & text)),
    Q_ARG(QString, "test"));

    Ah jetzt ja!

    Hab das aus dem Buch "C++ GUI Programming with Qt" übernommen, und eigentlich sollte es folgendermaßen aussehen, dann funktionierts:

    QMetaObject::invokeMethod(ui.textLog , "append",
    Q_ARG(QString, "test"));

    Nur warum kann ich alles ohne Probleme übersetzen 😕

    LG Willi


Anmelden zum Antworten