#ifndef MAINTHREAD_H
#define MAINTHREAD_H

#include <QObject>
#include <QPointer>
#include <QDebug>

class MainThread : public QObject
{
    Q_OBJECT
public:
    static void post(std::function<void()> func);
    ~MainThread();
private:
    static std::shared_ptr<MainThread> createShared(QObject* bindObject = nullptr);
private slots:
    void mainThreadSlot(std::function<void()> func);
private:
    MainThread(QObject* bindObject = nullptr);
    QPointer<QObject> _bindObject;
    bool _ignoreNullObject{ false };
};
#endif // MAINTHREAD_H