qtbinding.hpp 984 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef HELLO_H
  2. #define HELLO_H
  3. #include <QObject>
  4. #include <QWidget>
  5. #include <cstdlib>
  6. typedef void (*callback_t)(size_t);
  7. class Bridge: public QObject {
  8. Q_OBJECT
  9. public:
  10. Bridge(QWidget *parent = nullptr): QObject(parent) {
  11. QObject::connect (
  12. this, &Bridge::QueueCallback,
  13. this, &Bridge::__InvokeCallback,
  14. Qt::QueuedConnection
  15. );
  16. };
  17. virtual ~Bridge() {};
  18. signals:
  19. void QueueCallback(callback_t cb, size_t payload);
  20. private slots:
  21. void __InvokeCallback(callback_t cb, size_t payload) {
  22. cb(payload);
  23. };
  24. };
  25. class CallbackObject: public QObject {
  26. Q_OBJECT
  27. public:
  28. callback_t cb;
  29. size_t payload;
  30. CallbackObject(callback_t cb, size_t payload): QObject(nullptr) {
  31. this->cb = cb;
  32. this->payload = payload;
  33. };
  34. virtual ~CallbackObject() {};
  35. public slots:
  36. void slot() {
  37. this->cb(this->payload);
  38. };
  39. };
  40. #endif