c++ - 在使用 Open GL 的 Qt Creator C++ 应用程序中需要帮助
问题描述
我正在使用 C++ 在 Qt Creator 中编写一个应用程序。最终目标是在 Qt 主窗口中控制 OpenGL 窗口。
初始化很好,主窗口和 OpenGL 窗口都可以正常启动。
主窗口是 QMainwindow 的子类,OpenGL 窗口是 public QWindow、public QOpenGLFunctions 的子类。
这是问题的症结所在。我希望主窗口中的事件处理程序能够访问 OpenGLWindow。我似乎无法做到这一点。我已经克服了许多障碍,所以在这一点上我有以下设置;
- 在 main.cpp 中,我声明了 mainwindow 和 OpenGLWindow 的对象。我在 main.cpp 中有 mainwindow mousepressed 事件处理程序。照原样,一切正常。两个窗口都按应有的方式出现,并且事件处理程序代码完全按照我希望它在主窗口中执行的操作,只需在文本框中打印一些文本。
- 为了从 main.cpp 中的事件处理程序访问 openglwindow,我将 OpenGLWindow 对象声明为全局的,在 main () main.cpp 之外(这是不好的技术吗?)。
- 一切都编译得很好,但是当我运行它时,我收到错误“QPixmap:必须在 QPixmap 之前构造一个 QGuiApplication”。我假设这意味着系统不高兴我在应用程序对象之前创建 OpenGLWindow。
有没有更优雅的方法来做到这一点?我是否距离正确的代码只有几行,或者这需要一些重大的重新安排。
顺便说一句 - 我在 Windows 10 中执行此操作。我为此应用程序选择 Qt 和 OpenGL 的主要原因是我希望它可移植到 Linux。
解决方案
推荐阅读
- c# - Windows 服务启动时如何运行表单?
- flutter - 新项目上的颤振崩溃
- php - 无法将数据存储到 laravel 用户模型中
- python - 用于查找图形函数的交点的 Python 脚本
- e2e-testing - 页面初始化前如何在TestCafe中设置本地存储
- python - 如何在不改变轴比例的情况下将线函数(x =)插入虹膜数据立方体图?
- ethereum - 我已经使用 truffle unbox react 并且我无法在solidity中返回或添加值到数组
- python - 以 Finviz 之类的格式转换具有 >100 列的数据框
- html - 使用按钮在表格中滚动表格
- c - 使用 taylor put sin(1) 的 C 程序并得到 0.841