首页 > 解决方案 > 在使用 Open GL 的 Qt Creator C++ 应用程序中需要帮助

问题描述

我正在使用 C++ 在 Qt Creator 中编写一个应用程序。最终目标是在 Qt 主窗口中控制 OpenGL 窗口。

初始化很好,主窗口和 OpenGL 窗口都可以正常启动。

主窗口是 QMainwindow 的子类,OpenGL 窗口是 public QWindow、public QOpenGLFunctions 的子类。

这是问题的症结所在。我希望主窗口中的事件处理程序能够访问 OpenGLWindow。我似乎无法做到这一点。我已经克服了许多障碍,所以在这一点上我有以下设置;

  1. 在 main.cpp 中,我声明了 mainwindow 和 OpenGLWindow 的对象。我在 main.cpp 中有 mainwindow mousepressed 事件处理程序。照原样,一切正常。两个窗口都按应有的方式出现,并且事件处理程序代码完全按照我希望它在主窗口中执行的操作,只需在文本框中打印一些文本。
  2. 为了从 main.cpp 中的事件处理程序访问 openglwindow,我将 OpenGLWindow 对象声明为全局的,在 main () main.cpp 之外(这是不好的技术吗?)。
  3. 一切都编译得很好,但是当我运行它时,我收到错误“QPixmap:必须在 QPixmap 之前构造一个 QGuiApplication”。我假设这意味着系统不高兴我在应用程序对象之前创建 OpenGLWindow。

有没有更优雅的方法来做到这一点?我是否距离正确的代码只有几行,或者这需要一些重大的重新安排。

顺便说一句 - 我在 Windows 10 中执行此操作。我为此应用程序选择 Qt 和 OpenGL 的主要原因是我希望它可移植到 Linux。

标签: c++qtopengl

解决方案


推荐阅读