#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class RasterWindow : public QWindow { Q_OBJECT public: explicit RasterWindow(QWindow *parent = 0); virtual void render(QPainter *painter); public slots: void renderLater(); void renderNow(); protected: bool event(QEvent *event) override; void resizeEvent(QResizeEvent *event) override; void exposeEvent(QExposeEvent *event) override; private: QBackingStore *m_backingStore; }; class ColorWidget : public QWidget { public: ColorWidget(QWidget * parent=nullptr); void setColor(const QColor & c); protected: void paintEvent(QPaintEvent *event) override; private: QColor m_color; }; class MainWindow : public QDialog { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void resizeEvent(QResizeEvent *) override; private: RasterWindow * m_red; QWidget * m_red_widget; ColorWidget * m_yellow; ColorWidget * m_blue; ColorWidget * m_green; }; #endif // MAINWINDOW_H