- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近从 QGLWidget 切换到新的 QOpenGlWidget,因为后者缺少 renderText() 函数。我正在考虑使用 QPainter 在我的 openGL 3D 图形上绘制一些文本。
我最初通过 paintGL() 函数渲染所有内容,如何在该函数中安全地添加 QPainter?
我的代码是这样的:
paintGL()
{
//Raw OpenGL codes
//....
//Where to safely use the QPainter?
}
最佳答案
只需添加 QPainter
直接调用paintGL()
方法。
paintGL()
{
// OpenGL code...
QPainter p(this);
p.drawText(...);
}
paintGL()
函数由
QOpenGLWidget::paintEvent()
调用所以使用
QPainter
应该没有任何问题.
class CMyTestOpenGLWidget : public QOpenGLWidget
{
public:
CMyTestOpenGLWidget(QWidget* parent) : QOpenGLWidget(parent) {}
void initializeGL() override
{
glClearColor(0, 0, 0, 1);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
}
void paintGL() override
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-0.5, -0.5, 0);
glColor3f(0.0, 1.0, 0.0);
glVertex3f(0.5, -0.5, 0);
glColor3f(0.0, 0.0, 1.0);
glVertex3f(0.0, 0.5, 0);
glEnd();
QPainter p(this);
p.setPen(Qt::red);
p.drawLine(rect().topLeft(), rect().bottomRight());
}
void resizeGL(int w, int h) override
{
glViewport(0, 0, w, h);
}
};
关于qt - 如何在 QOpenGlWidget 的 paintGL 中使用 QPainter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36568668/
我已经通过关于 SO 上 PaintGL 的不同线程进行了一些研究,但我无法找到使它工作/完全理解所需的东西。 我想画一个立方体。每次我的按钮被点击时立方体应该旋转。 (只有当它被点击时,没有计时器等
我想通过按键事件控制 paintGL 方法。目的是通过插入返回来显示一个额外的点。换句话说:我画了一个漂亮的背景场景,现在我想按回车键(在 lineEdit 中),并且在已经显示的背景前面出现了一个红
我正在使用 QT 开发抵押贷款计算器。当用户单击按钮时,“on_pushButton_clicked()”函数将获取输入。 问题是我对如何将输入从“on_pushButton_clicked()”传递
我最近从 QGLWidget 切换到新的 QOpenGlWidget,因为后者缺少 renderText() 函数。我正在考虑使用 QPainter 在我的 openGL 3D 图形上绘制一些文本。
我正在使用 QOpenGLWidget并且无法理解我应该将绘图代码放在哪里:内部覆盖 paintGL或内部覆盖 paintEvent . 我应该调用这些函数的基类版本吗? 这些功能是如何连接的? pa
我有以下继承自 QOpenGLWidget 和 QOpenGLFunctions 的类: class OpenGLWidget : public QOpenGLWidget, protected QO
如标题所示,在 Qt 内部,我无法使用或调用 QGLWidget 函数之外的任何 OpenGL 函数,例如 initializeGL() 和 paintGL() . 在从我的 QMainWindow
我使用 Qt Creator 创建了一个非常简单的应用程序,其中包含一个 QOpenGLWidget 和一个 QPushButton,它们应该在每次点击时更改 opengl 小部件的清晰颜色。 这是“
我是一名优秀的程序员,十分优秀!