#ifndef BITCOIN_QT_CALLBACK_H #define BITCOIN_QT_CALLBACK_H #include class Callback : public QObject { Q_OBJECT public Q_SLOTS: virtual void call() = 0; }; template class FunctionCallback : public Callback { F f; public: explicit FunctionCallback(F f_) : f(std::move(f_)) {} ~FunctionCallback() override {} void call() override { f(this); } }; template FunctionCallback* makeCallback(F f) { return new FunctionCallback(std::move(f)); } #endif // BITCOIN_QT_CALLBACK_H