[Qt] Signal an anderen Thread schicken
-
Hallo,
da ich neu bei Qt bin und mir krümelkracker ja freundlicherweise gezeigt hat, wie man eine Funktion schreibt, die eine andere in einem neuen Thread startet, habe ich jetzt mal damit herumprobiert. Leider kann man von einem anderen Thread aus ja keine GUI-Veränderungen machen, daher wollte ich ein Signal an den ursprünglichen Thread schicken, damit dieser eine Meldung ausgibt. Jetzt weiß ich jedoch nicht, wie das geht. Mein Versuch bisher:
main.h
#include <QObject> class SignalManager : public QObject { Q_OBJECT public: signals: void ShowMessageSignal(QString title, QString text); public slots: void ShowMessageSlot(QString title, QString text); public: void EmitShowMessageSignal(QString title, QString text) { emit ShowMessageSignal(title, text); } };
main.cpp
#include <QApplication> #include <QFont> #include <QPushButton> #include <QMainWindow> #include <QMessageBox> #include <SKIP_Thread.hpp> #include "main.h" SignalManager smanager; void func_from_thread(QString str) { smanager.EmitShowMessageSignal("Hello World!", str); } void SignalManager::ShowMessageSlot(QString title, QString text) { QMessageBox::information(NULL, title, text); } int main(int argc, char* argv[]) { QApplication app(argc, argv); QObject::connect(&smanager, SIGNAL(ShowMessageSignal(QString, QString)), &smanager, SLOT(ShowMessageSlot(QString, QString))); QMainWindow win; QPushButton quit("Quit", &win); quit.resize(75, 30); quit.setFont(QFont("Times", 18, QFont::Bold)); QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit())); win.show(); skip::thread_exec(func_from_thread, "xxx"); return app.exec(); }