LoginSignup
0
0

More than 1 year has passed since last update.

Qt+QOpenGLWidget+CMake の手順メモ

Posted at

0)環境

Ubuntu 20.04
Qt5
GCC 9
GDB

1)Qtのプロジェクト生成する。

このとき、ビルド条件はCMAKEを利用する。

2) 生成されたQtのプロジェクトをビルドする

ここは、特に何もくビルドできるはず。何も問題がなければ空のWindowが立ち上がる。

3)自己定義のGLwigetのクラスを定義する。

これは、この辺のページが参考になる。

glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H


#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QColor>
#include <QOpenGLFunctions_1_0>



class GLWidget : public QOpenGLWidget, public QOpenGLFunctions
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = nullptr);

    virtual ~GLWidget();

    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);


signals:

public slots:
};

#endif // GLWIDGET_H

"glwidget.cpp"

#include "glwidget.h"

GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent)
{


}


GLWidget::~GLWidget()
{

}

void GLWidget::initializeGL()
{
    initializeOpenGLFunctions();
    glClearColor(0.1, 0.1, 0.1, 1);
}

void GLWidget::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin ( GL_TRIANGLES );
    glColor3f ( 1.0 , 0.0 , 0.0 );
    glVertex3f (- 0.5 , - 0.5 , 0 );
    glColor3f ( 0.0 , 1.0 , 0.0 );
    glVertex3f ( 0.5 , - 0.5 , 0 );
    glColor3f ( 0.0 , 0.0 , 1.0 );
    glVertex3f ( 0.0 , 0.5 , 0 );
    glEnd ();
}

void GLWidget::resizeGL(int w, int h)
{
    Q_UNUSED(w)
    Q_UNUSED(h)
}



4) Uiファイル編集にて、配置したQWidgetかOpenGLWidgetのオブジェクトに自己定義のウィジェットを設定。

・QWidgetかOpenGLWidgetを配置する

image.png

・QOpenGLWidgetの「promoted widget(格上げされたウィジェット)」にて、自己定義のクラス格上げする。

今回は、自己定義ファイルは、「GLWidget」となる。
Screenshot from 2022-11-05 08-34-57.png

5) CMakeのビルド条件を追加する。

これが追加部分

find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)

target_link_libraries(QtTestOpenGL PRIVATE Qt5::Widgets ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})

6) ビルドすればトライアングルが表示される

image.png

参考 CmakeLists.txt

CmakeLists.txt を載せておく。

cmake_minimum_required(VERSION 3.5)

project(QtTestOpenGL LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)


add_executable(QtTestOpenGL
  main.cpp
  mainwindow.cpp
  mainwindow.h
  mainwindow.ui
  glwidget.cpp
  glwidget.h
)

target_link_libraries(QtTestOpenGL PRIVATE Qt5::Widgets ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0