diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-09-13 08:54:45 +0200 |
---|---|---|
committer | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-09-13 08:54:45 +0200 |
commit | b62bd0584a7872b6917917009b707785b3abd077 (patch) | |
tree | 9981f274712c098cabbff0c4667672a3934e5393 /examples/opengl/paintedwindow/paintedwindow.cpp | |
parent | 5e10745dca1d10025404a9f268f03ae697fb10cc (diff) | |
parent | 97baad65f65783d2b5ff938f6217aec9434f2e5f (diff) |
Merge branch 'refactor'
Conflicts:
mkspecs/qws/linux-lsb-g++/qmake.conf
src/gui/image/qpixmap_mac.cpp
src/gui/painting/qpaintengine_x11.cpp
src/gui/painting/qtessellator.cpp
src/gui/text/qfontengine_qws.cpp
src/gui/text/qfontengine_x11.cpp
src/gui/widgets/qlinecontrol.cpp
src/opengl/qgl.h
src/opengl/qgl_x11egl.cpp
src/plugins/plugins.pro
Change-Id: If52dcd55cd55f2983a756c2f843967702b60a310
Diffstat (limited to 'examples/opengl/paintedwindow/paintedwindow.cpp')
-rw-r--r-- | examples/opengl/paintedwindow/paintedwindow.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/opengl/paintedwindow/paintedwindow.cpp b/examples/opengl/paintedwindow/paintedwindow.cpp new file mode 100644 index 0000000000..9b27c56914 --- /dev/null +++ b/examples/opengl/paintedwindow/paintedwindow.cpp @@ -0,0 +1,53 @@ +#include "paintedwindow.h" + +#include <QOpenGLContext> +#include <QOpenGLPaintDevice> +#include <QPainter> +#include <QTimer> + +#include <qmath.h> + +PaintedWindow::PaintedWindow() +{ + QSurfaceFormat format; + format.setStencilBufferSize(8); + format.setSamples(4); + + setSurfaceType(QWindow::OpenGLSurface); + setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint); + setFormat(format); + + create(); + + m_context = new QOpenGLContext(this); + m_context->setFormat(format); + m_context->create(); +} + +void PaintedWindow::resizeEvent(QResizeEvent *) +{ + paint(); +} + +void PaintedWindow::exposeEvent(QExposeEvent *) +{ + paint(); +} + +void PaintedWindow::paint() +{ + m_context->makeCurrent(this); + + QPainterPath path; + path.addEllipse(0, 0, width(), height()); + + QOpenGLPaintDevice device(size()); + + QPainter painter(&device); + painter.fillRect(0, 0, width(), height(), Qt::white); + painter.setRenderHint(QPainter::Antialiasing); + painter.fillPath(path, Qt::blue); + painter.end(); + + m_context->swapBuffers(this); +} |