From d9ffbb1b6cb0862461e278df080bf0ede39e1c0e Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Wed, 2 Feb 2022 22:44:50 +0100 Subject: [PATCH] opengl basics --- CMakeLists.txt | 4 ++-- headers/MainWindow.h | 6 +++--- headers/OutputWidget.h | 14 +++++++++++++- src/MainWindow.cpp | 18 ++++++++---------- src/OutputWidget.cpp | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8dc192e..97af436 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ find_package(Qt6 COMPONENTS Core Gui Widgets - OpenGL + OpenGLWidgets REQUIRED) file(GLOB_RECURSE SOURCE_FILES src/**.cpp) @@ -23,5 +23,5 @@ target_link_libraries(Mandelbrot Qt::Core Qt::Gui Qt::Widgets - Qt::OpenGL + Qt::OpenGLWidgets ) \ No newline at end of file diff --git a/headers/MainWindow.h b/headers/MainWindow.h index 29558fb..1007800 100644 --- a/headers/MainWindow.h +++ b/headers/MainWindow.h @@ -6,9 +6,9 @@ class MainWindow : public QWidget { Q_OBJECT public: - explicit MainWindow(QWidget *parent = nullptr); -public slots: - void sizeChanged(int newValue); + explicit MainWindow(); +private slots: + void sizeSliderChanged(int); private: void buildUI(); diff --git a/headers/OutputWidget.h b/headers/OutputWidget.h index 8a8f5db..d34bfdb 100644 --- a/headers/OutputWidget.h +++ b/headers/OutputWidget.h @@ -3,9 +3,21 @@ #include +#include +#include -class OutputWidget : public QWidget{ +class OutputWidget : public QOpenGLWidget, protected QOpenGLFunctions { + Q_OBJECT +private: + void initializeGL() override; + void paintGL() override; + void resizeGL(int, int) override; + void wheelEvent(QWheelEvent*) override; + void mouseMoveEvent(QMouseEvent*) override; + void mousePressEvent(QMouseEvent*) override; + void mouseReleaseEvent(QMouseEvent*) override; + void keyPressEvent(QKeyEvent*) override; }; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 261c36e..61cdb5e 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -3,7 +3,7 @@ #include #include "../headers/MainWindow.h" -MainWindow::MainWindow(QWidget *parent): QWidget(parent) { +MainWindow::MainWindow() { buildUI(); } @@ -11,20 +11,18 @@ void MainWindow::buildUI() { auto sizeSlider = new QSlider(Qt::Horizontal); sizeSlider->setRange(100, 800); - QSlider::connect(sizeSlider, &QSlider::valueChanged, this, &MainWindow::sizeChanged); + QSlider::connect(sizeSlider, &QSlider::valueChanged, this, &MainWindow::sizeSliderChanged); sizeSlider->setValue(500); auto controls = new QGridLayout; controls->addWidget(sizeSlider); - QVBoxLayout lyt; - - lyt.addWidget(outputWidget); - lyt.addLayout(controls); - - setLayout(&lyt); + auto lyt = new QVBoxLayout(this); + lyt->addWidget(outputWidget); + lyt->addLayout(controls); } -void MainWindow::sizeChanged(int newValue) { - std::cout << newValue << std::endl; +//TODO Handle size change +void MainWindow::sizeSliderChanged(int newValue) { + } diff --git a/src/OutputWidget.cpp b/src/OutputWidget.cpp index 692a417..7eca312 100644 --- a/src/OutputWidget.cpp +++ b/src/OutputWidget.cpp @@ -1,2 +1,34 @@ #include "../headers/OutputWidget.h" + +void OutputWidget::initializeGL() { + +} + +void OutputWidget::paintGL() { + +} + +void OutputWidget::resizeGL(int w, int h) { + +} + +void OutputWidget::wheelEvent(QWheelEvent *e) { + +} + +void OutputWidget::mouseMoveEvent(QMouseEvent *e) { + +} + +void OutputWidget::mousePressEvent(QMouseEvent *e) { + +} + +void OutputWidget::mouseReleaseEvent(QMouseEvent *e) { + +} + +void OutputWidget::keyPressEvent(QKeyEvent *e) { + +}