namespace Ui {
class Form;
}
class Form : public QWidget {
Q_OBJECT
private:
void (*CallbackFunc)(QVariantMap*);public: explicit Form(QWidget *parent = nullptr); ~Form();
signals:
void Process(QVariantMap msg);
private slots:
void on_pushButton_clicked();
private:
Ui::Form *ui;
};
typedef void (Form::*FormFuncType)(void);
Q_DECLARE_METATYPE(FormFuncType)
class AppThread : public QThread {
Q_OBJECT
private:
int argc;
char ** argv;
QApplication *app;
public:
Form *window;
explicit AppThread(QObject *parent = nullptr);
~AppThread();
private slots:
void onReceive(QVariantMap msg);
};
void AppThread::onReceive(QVariantMap msg)
{
FormFuncType func = msg.value("window").value<FormFuncType>();
if (func) (window->*func)();
FormFuncType func = &Form::activateWindow;
if (func) (window->*func)();
}
qRegisterMetaType<FormFuncType>("FormFuncType");
QVariantMap msg;
msg.insert("window", (FormFuncType)&Form::activateWindow);
emit Receive(msg)