2.Hello Widget

2.1.前提

搭建环境,包括:

2.2.Hello Widget

  1. 使用QT Creator创建项目;
  2. 配置cmakelists
   (1)find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets OpenGLWidgets)
   (2)target_link_libraries(GLViewer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt6::OpenGLWidgets)

cmake find package

图:cmake find package

cmake link lib

图:cmake link lib
  1. 添加Widget类GLView,并配置 header file
图:header file

source file

图:source file
   #include <QOpenGLWidget>
   #include <QOpenGLFunctions_4_5_Core>
  1. 创建OpenGL Widget窗口,并将其类提升为新创建的 GLView; promote to
图:promote to
  1. 创建状态栏 create status bar
图:create status bar
  1. GLWindow构造函数中将GLView设置为中心窗体;
GLWindow::GLWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::GLWindow)
{
    ui->setupUi(this);
    setCentralWidget(ui->openGLWidget);
}
  1. 重写绘制相关虚函数 overriding
图:overriding
void GLView::initializeGL()
{
    initializeOpenGLFunctions();
}
void GLView::resizeGL(int w, int h)
{
}
void GLView::paintGL()
{
    glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
}
  1. 编译,运行

overriding

Widget

Attention

提示: #include <glview.h>可能会报错,这是编译器一般的处理机制,为了更高效的搜寻标准库和第三方库中的头文件,在本项目中glview.h是项目文件,用尖括号包含的话会以标准库和第三方库的方式是寻找,可能找不到,如果想避免这个错误,可以在cmakelists中添加如下代码指定头文件搜索路径:

target_include_directories(GLViewer PRIVATE .)