#include #include class QPainter; class QOpenGLContext; class QOpenGLPaintDevice; class OpenGLWindow : public QWindow , protected QOpenGLFunctions { Q_OBJECT public: explicit OpenGLWindow(QWindow * parent = nullptr); ~OpenGLWindow(); virtual void render(QPainter * painter); virtual void render(); virtual void initialize(); QOpenGLContext * context() { return m_context; } public slots: void renderLater(); void renderNow(); protected: bool event(QEvent * event) override; void exposeEvent(QExposeEvent * event) override; private: QOpenGLContext * m_context; QOpenGLPaintDevice * m_device; };