#pragma once #include namespace LtsUtils { // First Example class PromiseExample1_Class : public QObject { Q_OBJECT public: using QObject::QObject; void doSomethingAsync1(); void doSomethingAsync2(); signals: void signalDone1(bool didThisWork); void signalDone2(bool didThisWork, int someNumberThatReturns); }; class PromiseExample1 : public QObject { Q_OBJECT public: explicit PromiseExample1(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; }; // End of First Example // Second Example class PromiseExample2 : public QObject { Q_OBJECT public: explicit PromiseExample2(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; }; // End of Second Example // 3rd Example class PromiseExample3 : public QObject { Q_OBJECT public: explicit PromiseExample3(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; bool m_alreadyRejected; }; // End of 3rd Example } // namespace LtsUtils