opengl basics

master
Benjamin Kraft 3 years ago
parent f29499fee6
commit d9ffbb1b6c
  1. 4
      CMakeLists.txt
  2. 6
      headers/MainWindow.h
  3. 14
      headers/OutputWidget.h
  4. 18
      src/MainWindow.cpp
  5. 32
      src/OutputWidget.cpp

@ -12,7 +12,7 @@ find_package(Qt6 COMPONENTS
Core Core
Gui Gui
Widgets Widgets
OpenGL OpenGLWidgets
REQUIRED) REQUIRED)
file(GLOB_RECURSE SOURCE_FILES src/**.cpp) file(GLOB_RECURSE SOURCE_FILES src/**.cpp)
@ -23,5 +23,5 @@ target_link_libraries(Mandelbrot
Qt::Core Qt::Core
Qt::Gui Qt::Gui
Qt::Widgets Qt::Widgets
Qt::OpenGL Qt::OpenGLWidgets
) )

@ -6,9 +6,9 @@
class MainWindow : public QWidget { class MainWindow : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
explicit MainWindow(QWidget *parent = nullptr); explicit MainWindow();
public slots: private slots:
void sizeChanged(int newValue); void sizeSliderChanged(int);
private: private:
void buildUI(); void buildUI();

@ -3,9 +3,21 @@
#include <QWidget> #include <QWidget>
#include <QOpenGLFunctions>
#include <QOpenGLWidget>
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;
}; };

@ -3,7 +3,7 @@
#include <iostream> #include <iostream>
#include "../headers/MainWindow.h" #include "../headers/MainWindow.h"
MainWindow::MainWindow(QWidget *parent): QWidget(parent) { MainWindow::MainWindow() {
buildUI(); buildUI();
} }
@ -11,20 +11,18 @@ void MainWindow::buildUI() {
auto sizeSlider = new QSlider(Qt::Horizontal); auto sizeSlider = new QSlider(Qt::Horizontal);
sizeSlider->setRange(100, 800); sizeSlider->setRange(100, 800);
QSlider::connect(sizeSlider, &QSlider::valueChanged, this, &MainWindow::sizeChanged); QSlider::connect(sizeSlider, &QSlider::valueChanged, this, &MainWindow::sizeSliderChanged);
sizeSlider->setValue(500); sizeSlider->setValue(500);
auto controls = new QGridLayout; auto controls = new QGridLayout;
controls->addWidget(sizeSlider); controls->addWidget(sizeSlider);
QVBoxLayout lyt; auto lyt = new QVBoxLayout(this);
lyt->addWidget(outputWidget);
lyt.addWidget(outputWidget); lyt->addLayout(controls);
lyt.addLayout(controls);
setLayout(&lyt);
} }
void MainWindow::sizeChanged(int newValue) { //TODO Handle size change
std::cout << newValue << std::endl; void MainWindow::sizeSliderChanged(int newValue) {
} }

@ -1,2 +1,34 @@
#include "../headers/OutputWidget.h" #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) {
}

Loading…
Cancel
Save