c++ OpenGL显示Qt 6.5应用程序窗口无响应

ruyhziif  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(143)

我尝试在Qt 6.5中运行基本的OpenGL示例,其中我只创建OpenGL表面窗口。代码简短而清晰,但我看不出缺少什么...

main.cpp:

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.setTitle("OpenGL basic");
    w.resize(640,480);
    w.show();

    return a.exec();
}

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QOpenGLWindow>

class MainWindow : public QOpenGLWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    virtual void initializeGL();
    virtual void resizeGL(int w, int h);
    virtual void paintGL();
    void resizeEvent(QResizeEvent *event);
    void paintEvent(QPaintEvent *event);
};
#endif // MAINWINDOW_H

主窗口.cpp

  • 我排除了构造函数和析构函数以外的方法,因为它们是空的。
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
{
    setSurfaceType(QWindow::OpenGLSurface);
}

MainWindow::~MainWindow()
{
}

我希望我的问题很清楚,不要太长。谢谢你!

.pro文件:

QT       = core gui
QT += opengl

LIBS        += -lopengl32 -lglu32

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = OpenGL
TEMPLATE = app

CONFIG += c++17

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

下面是我得到的结果:

whhtz7ly

whhtz7ly1#

经过几天的努力,我找到了自己的解决方案。
在Qt 6.5 for OpenGL中,他们使用QOpenGLWidget
在此链接中,您可以找到有关QOpenGLWidget的文档:https://doc.qt.io/qt-6/qopenglwidget.html

相关问题