问题标签 [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 投票
2 回答
287 浏览

c++ - QGLWidget 中的渲染和颜色选择:如何应对两者

我想知道是否有比这更好的解决方案:我有一个渲染代码和一个颜色选择代码,我已经共享了可以在这两个代码(VBO 等)之间共享的所有内容,我的代码如下所示:

代码有效,用户看不到闪烁,但坦率地说,在我的代码中使用 goto 的想法在我看来是一个糟糕的解决方案。

您还有其他更好的主意吗?

0 投票
1 回答
1933 浏览

c++ - 为什么我的 qt centralWidget(一个 QGLWidget)不能正确调整大小?

我有一个带有 QMainWindow 的应用程序,理想情况下应该有一个 QGLWidget 以它为中心,在外部留有空间用于工具栏和其他顶部/侧面小部件。

不幸的是,无论 QGLWidget 设置为什么大小或几何形状,它看起来都很大并且占据了整个主窗口!

基本上,设置如下:在main()中调用CreateWindow(),构造主窗口,调用函数Init(),构造GLWidget。因此,在我改编的主窗口类的成员 Init() 中,我基本上有:

现在,为了使 GLScene 符合其所需的大小和位置,我首先尝试在 GLWidget(也就是我的直接从 GLWidget 派生的类)构造函数中设置它的几何图形:

然而,这根本不起作用,仍然占据了整个主窗口。相反,我尝试将 setGeometry 调用放入 Init()。我在 setCentralWidget(); 之前和之后都试过了。两种选择都不起作用。也没有完全删除 setCentralWidget 调用(事实上,这使得 GLWidget 消失了)。

既然这显然不能正常工作,那么缩放 GLWidget 的正确方法是什么?还是只是我需要更深入地研究事物的顺序问题?

0 投票
0 回答
1282 浏览

qt - 随着 QStackedWidget 索引的快速变化而闪烁

我使用存储在 QStackedWidget 中的两个 QGLWidget 在 Qt 中开发了一个图像可视化应用程序。我希望能够依次快速显示每个 QGLWidget,以便发现所考虑的两个图像中的差异。为此,我将wheelEvent()函数映射到setCurrentIndex()QStackedWidget 的。

我的问题是,当快速触发该wheelEvent()功能时,这不时会导致白色闪烁,这会干扰图像分析任务。就像在显示 QGLWidget 之前显示某些小部件的默认背景一样,但我一直无法找到哪个...

我在 VisualStudio 2008 中使用 C++ 和 Qt 4.7,问题出现在 Windows XP 和 Windows 7 上。

以下是重现问题的最小代码:

我尝试使用下面的代码将所有涉及的小部件的背景颜色设置为黑色(包括 QMainWindow),但仍然出现白色闪烁。

有谁知道如何消除这种闪烁?

0 投票
1 回答
980 浏览

qt - QGLWidget 在 Mac OS X Lion 下无法正常工作

如您所见-我不知道为什么它根本不起作用。

当程序运行时,它将如下所示:显示损坏

我正在使用来自 macports 的 qt4-mac(v4.8.2)。看起来这个包是预编译的。

这是来源:

主.cpp:

GLPlayerWindow.hpp:

GLPlayerWindow.cpp:

和 .pro 文件:

0 投票
2 回答
347 浏览

qt - 在 QGLWidget 中将位复制到 QtImage

也许有人可以帮助我解决以下问题:我想在 QGLWidget 中绘制 QImage 的内容,但小部件被涂成黑色。

错误:当调用插槽时,内存被复制到图像中。如果图像被保存,则内容是正确的。但是 repaint 方法只是将黑色内容绘制到小部件。

修复:如果 memcpy 行在插槽外实现,则图像内容被绘制到小部件。此修复程序大大增加了代码复杂性。因此,我有以下问题:

问题:为什么 memcpy 在插槽中不起作用?这是 Qt 的普遍问题吗?

0 投票
1 回答
681 浏览

qt - 当我展开主窗口时,为什么我的中央 QGLWidget 不会增长?

我有一个带有 QGridLayout 的 QMainWindow,其中第一行是工具栏(跨所有列),第二行在左侧(第一列)有一个文本显示区域,在右侧(第二列)有一个 QGLWidget。[附加说明......不确定是否相关:为了让所有内容都按照我想要的方式排列,我不得不在其中的大多数上使用 setMinimumSize。]

无论如何,当我最大化或以其他方式尝试使主窗口更大时,QGLWidget 会变宽一点,但不会垂直增长。我怎样才能强迫它与窗口一起成长呢?这可能与小部件本身或网格布局有关吗?

0 投票
1 回答
381 浏览

c++ - 轨道球体应该在中央立方体上投射聚光灯

我正在编写一个程序,它在屏幕中间绘制一个旋转立方体(带有纹理) ,然后是一个围绕立方体运行的黄色小球。这个想法是使球体成为照亮立方体的聚光灯。

这是问题所在:如下图所示,我无法实现聚光灯效果。似乎整个立方体都被点亮了:

我设置GL_SPOT_DIRECTION为立方体位置。我没有设置表面法线,因为我很难理解如何为立方体计算它们,而且我不确定像这样的简单图形应用程序是否真的需要它。

我在下面分享代码:

主.cpp

GLWidget.h

GLWidget.cpp

Lighting.pro

为了达到预期的效果,在这个应用程序中需要改变什么?

0 投票
1 回答
437 浏览

opengl - pyqt:为什么 QGLWidget 受 Maya 事件影响?

带有玛雅的openGL

我用 QGLWidget 制作了一个 openGL 视图。使用 Maya 时出现问题。正如您在视频中看到的,当我在 Maya 中单击并移动模型面板时,QGLWidget 会损坏。我发现选框矩形显示在我的 QGLWidget 上,而不是 Maya 上。为什么会出现这个问题?

到约会狼

我尝试按照您的建议编辑我的代码。但是......它根本不调用 makeCurrent() 和 doneCurrent() 。我希望当我单击我的 Maya 模型面板时,它可以向我发送消息,但它没有。我错过了什么?对此感到抱歉。

我写的和上面一样。但它甚至从不显示“MESSAGE”。

0 投票
0 回答
355 浏览

qt4 - Qt QGLWidget GLuint 数组内存对齐问题

我正在使用 QGLWidget 子类在 Qt 中关注NeHe OGL 教程。到目前为止我还没有遇到任何问题,并且在第6 次教程中在纹理映射中,他介绍了对旋转框进行纹理化。我让一切正常,然后尝试在立方体的每一侧添加我自己的纹理。我使用 QGLWidget::bindTexture() 函数加载通过 Qt 资源系统存储的 256x256 bmp 文件,并将 GLuint id 保存在私有成员数组中。在paintGL() 中,在为正方形的每个面调用glBegin(GL_QUADS) 和glEnd() 之前,我使用GL_TEXTURE_2D 和GLuint 数组元素之一作为参数调用glBindTexture()。它编译得很好,但是该框要么呈现完全白色(好像它可能找不到纹理),否则我在旋转绘制过程中得到疯狂的黑白伪影,随机线条在整个屏幕上射击。

在搞砸的同时,我设法通过在我的类声明的末尾添加另一个私有数据成员来解决问题,当事情神奇地开始工作时,我决定在类声明中将我的 GLuint 纹理数组的声明移到更高的位置,这似乎有效. 我对内存对齐一无所知,这似乎是正在发生的事情的最明显原因,我很想解释这里发生的事情。

万一这很重要,这是在 Qt 4.6 上,在 GCC 4.4.0 和 MinGW 5.1.6 中的 GNU Make 3.8.1 上编译(我应该升级)。

代码:glwidget.hpp,有问题的声明在底部注释

glwidget.cpp

0 投票
2 回答
5062 浏览

qt - 调用 QGLContext::makeCurrent() 的方法

我正在尝试在我们的应用程序中使用 QGLWidget。我从 QGLWidget 创建了一个派生类。我正在从一个单独的线程更新纹理(使用 glTexSubImage2D),并从 GUI 线程在 paintGL 中绘制纹理(使用 glTexCoord2i ..)。

我面临的问题是,当我调整窗口大小或最小化或最大化时,我得到“QGLContext::makeCurrent() : wglMakeCurrent failed: The requested resource is in use”,即使我已经覆盖了 initializeGL、resizeGL、paintGL 方法和在离开这些方法之前调用 doneCurrent。

有人可以帮助我了解需要覆盖哪些其他方法来解决此问题。

谢谢你。文

这是我的代码模板