问题标签 [qglwidget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1319 浏览

qt - 在 MainWindow 中使用 QCheckBox 和 QPushButton 关注 QGLWidget

我有一个带有 QCheckBox 和 QPushButton 的 Qt 主窗口以及一个用于图形渲染的子 QGLwidget 类小部件。

我已经放入void Ui_MainWindow::setupUi(QMainWindow *MainWindow)成员函数:

我创建了修改图形渲染的信号widget_2

widget_2尽管单击pushButton_2or ,但要始终保持专注checkBox_3,我必须输入pauseSimu()and hideClassic()

上的关键事件widget_2 GLWidget编码在 GLWidget 类成员函数中。

我怎样才能避免setFocus()在所有信号函数中使用以始终将注意力集中在widget_2GLWidget 上?

0 投票
1 回答
7190 浏览

qt - Qt OpenGL - 鼠标拖动旋转 - 负增量

我有一个 QGLWidget 的 GLWdiget 子类,我想在其中沿 Ox 和 Oy 轴旋转 3D 对象。

为此,我以这种方式重新实现mousePressEventmouseMoveEvent运行:

我的问题是,dx并且dy永远不会是负数,所以无论我用鼠标做什么方向,它总是在同一个方向旋转。

例如,如果我水平向右拖动,我希望对象以正角沿 0y 轴旋转,如果我向左水平拖动,则以负角旋转。

这对于垂直拖动是相同的,但旋转将沿着 Ox 轴。

这个问题来自全球坐标吗?但是,event->xevent->y给出相对于 GLWidget 的位置。

0 投票
4 回答
807 浏览

opengl - QGLWidget 中的 gl_lines 和 gl_clear

我在绘制 QGLWidget 时遇到问题。我在小部件上有几个四边形,当按下一些键时我可以四处移动。只要我只画四边形,一切正常,但现在我想添加一些线:

绘图也可以正常工作,但清除 glwidget 不再起作用。意味着我看到了我曾经画过的一切。顺便提一下。我使用相同的初始化对 GLUT 进行了同样的尝试,并且它工作了,但是由于我已经切换到 Qt,它不再工作了。paintGL()、resizeGL() 和 initializeGL() 如下所示。

}

}

}

有任何想法吗?

0 投票
1 回答
343 浏览

c++ - 多个 QGLWidgets 和 gluUnProject

我有一个包含两个 QGLWidget 的 QMainWindow。小部件使用默认构造函数并且不共享上下文。这些小部件都显示二维数据并允许单击和拖动。

这可以使用 gluUnproject 并在创建的第一个 QGLWidget 上运行良好。单击第二个小部件时,一切都按预期工作。但是,当拖动第二个小部件时,移动并不顺畅。更糟糕的是,一旦第二个小部件被拖动,第一个小部件的 gluUnproject 就会出现与第二个显示器被拖动的方向和距离相关的一些边距。

我尝试在绘图方法开始时、鼠标事件开始时调用 makeCurrent() 以及一个、另一个和两者的组合,但没有看到任何改进。

0 投票
2 回答
1586 浏览

c++ - QGLWidget refuses to draw anything

I've looked at a ton of articles and SO questions about OpenGL not drawing, common mistakes, etc. This one is stumping me.

I've tried several different settings for glOrtho, different vertex positions, colors, etc., all to no avail.

I can confirm the OpenGL state is valid because the clear color is purple in the code (meaning the window is purple). gDEBugger is also confirming frames are being updated (so is Fraps).

Here is the code. Lines marked as "didn't help" were not there originally, and were things that I tried and failed.

The triangle is not being displayed at all, even with culling turned off. However, all three debug logs are called exactly how they should be.

What am I missing?

0 投票
2 回答
2979 浏览

qt - 如何继承 QGLWidget 以使用 glew?

我正在努力获得一个使用 glew 编译的 QGLWidget 子类。我在 Windows 7 上运行 Qt 5.0.1 + MinGW 4.7。Glew 1.7.0 已经用所述 MinGW 编译。

我将 QGLWidget 与 UGGLWidget 子类化,并"GL/glew.h"在 QGLWidget 包含之前包含在内。编译时出现 200 个错误:

  • “功能”重新声明为不同类型的符号
  • 冲突的声明'typedef'

所以我的问题: 如何获得使用在 Qt5 下编译的 glew 的 QGLWidget 子类?


编辑:我用另一个设置(Qt4.7 + MinGW4.4)尝试了同样的方法。它编译并运行得很好。我也尝试过使用更新版本的 glew (Qt5.0.1 + MinGW4.7 + glew1.9.0) 这也不能编译并给出相同的编译错误。


这是编译器输出的混乱片段:

最后但并非最不重要的是子类的头文件和源文件。它现在真的只是空的。

来源:

标题:

哦,也许 .pro 文件中的相关部分

0 投票
1 回答
2670 浏览

qt - OpenSceneGraph 和多个查看器

我正在使用 OpenSceneGraph 和 Qt 开发模拟软件。模拟可以涉及同一虚拟世界中的多个机器人。我对视图的要求如下:

  • 能够显示静态世界相机
  • 能够显示机器人摄像头
  • 能够移动这些视图和/或堆叠它们

为了完成这些任务,我制作了一个“OSGWidget”,它使用一个 Osg Viewer 在 QGLWidget 中渲染场景。这个 OSGWidget 又被放置在一个 QDockWidget 中,该 QDockWidget 可以四处移动和/或堆叠,以满足该要求。

问题是,当使用多个单一查看器在不同的小部件中渲染相同的场景时,我得到了奇怪的渲染行为。即,纹理无法正确显示,有时甚至根本无法显示。

我查看了 SO 和 OSG 论坛,虽然人们也遇到过类似的问题,但我看到的唯一回复是建议切换到 Osg CompositeViewer。出于我的目的,我想避免使用它,因为它打破了我对渲染相同场景的可移动和可堆叠小部件的期望要求。

这是一个很难被 Osg 轻松处理的棘手情况吗?我看过几篇帖子说这不是 OSG 的“应该工作”方式,但他们并没有真正提供事实来支持这种说法。有没有人做过类似的事情或有任何想法/见解?如果需要,我可以提供代码片段,但这可能与 Osg 的意识形态相矛盾,我将等待得到一些回应。

0 投票
1 回答
1499 浏览

c++ - 布局中有多个 QGLWidget

我想编写一个单线程应用程序,它会显示两个 QGLWidget(一个用于 3D,一个用于 2D)。我试图查找同时显示的两个 QGLWidgets 的信息,但我没有找到任何对我有帮助的东西。

现在,我认为我不需要共享上下文 - 显示的数据没有以有用的方式相关。两者应该放在 QMainWindow 内,最好用 QSplitter 分开。出于测试目的,我将两个 QGLWidget 放入一个 QHBoxLayout,但由于某种原因,一次只显示其中一个。它取决于创建小部件实例的顺序,就好像一个以某种方式覆盖另一个。QSplitter 根本不显示任何内容。如果我尝试对它们都调用 show(),则只会出现一个窗口。(我通过将布局放在一起的 QWidget 将 QGLWidgets 放入 QMainWindow。)

我错过了什么还是与我如何使用小部件有关?

主窗口:

QGL小部件:

ModelView 和 UnfoldedView 类的代码几乎相同(目前)。我认为他们自己不会分享任何东西。

0 投票
2 回答
378 浏览

c++ - 立方体在 QGLWidget 中呈现为正方形

我一直试图在 QGLWidget 中渲染一个立方体,但结果是错误的。无论我如何旋转它,它看起来都像一个扁平的正方形。就好像它没有注意到它的顶点的 Z 坐标一样。就在我添加清除 GL_DEPTH_BUFFER_BIT 之前,正方形看起来就像立方体的所有侧面都挤成一个。现在它似乎丢弃了不属于正面的顶点,但它仍然不是立方体。!

截图 [链接]

我的初始化GL()和paintGL():

顶点和索引应该正确定义,它们取自教程,大多数代码也是如此。不过,二维对象的渲染似乎还不错。

另外,为什么教程用 -2 参数调用 matrix.translate ?如果我将其更改为大于 1 的任何其他值或将其删除,渲染的对象就会消失。

Qt5,Windows Vista 32 位。

0 投票
1 回答
2800 浏览

c++ - 在 OpenGL 和 Qt5 (QGLWidget) 中具有固定纵横比 (1:1) 的透视图

我正在尝试将多维数据集渲染到 QSplitter 内的 QGLWidgetput 中。我希望它具有 1:1 的比例,因此它是一个立方体,并且无论窗口尺寸如何都保持该比例。不过,我无法让它发挥作用。无论我做什么,立方体都会随着窗户伸展。

我对代码的工作方式还有两个额外的问题。

  • matrix.setToIdentity()重置除了在 结尾发生的投影和平移之外的所有内容initializeGL(),因此当我在 中调用它时resizeGL(),投影与前一个结合,即使我在此之前将矩阵设置为恒等。

  • aspect ratio的论点matrix.perspective()似乎无济于事。我尝试了几个没有效果的值。

  • 出于某种原因,投影是正交的,而不是透视的。

  • 矩阵在 之后仍然是一个恒等式perspective(),但前提是我按该顺序调用setToIdentity()and 。perspective()resizeGL

  • 矩阵运算中initializeGL()resizeGL()得到不同的处理。如果我不调用translate()and perspective()in initializeGL(),即使我稍后再调用,立方体也不会出现resizeGL()

谁能给我解释一下?我认为该QMatrix4x4课程是为了将矩阵保存到 3D 转换,所以我不必自己实现它们。

我看过一些教程,但是它们要么以类似的方式使用某种矩阵,要么似乎使用了已弃用的 OpenGL 函数。尝试将宽度和高度转换为浮点数并使用单独的矩阵进行转换。

如何使 1:1 的比例起作用?

我的一段相关代码: