gpt4 book ai didi

c++ - Qt鼠标事件左键不翻译qt对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:54 25 4
gpt4 key购买 nike

我在 QGLWidget 类上有以下鼠标事件......

void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
QPointF mousePosition = event->pos();
float dx = event->x() - lastPos.x();
float dy = event->y() - lastPos.y();

if (event->buttons() & Qt::LeftButton) {
setXRotation(xRot + 8.0 * dy);
setYRotation(yRot + 8.0 * dx);
} else if (event->buttons() & Qt::RightButton) {
xTrans += dx;
yTrans -= dy;
}
lastPos = event->pos();
}

paint GL 中的旋转有效但平移无效。我做错了什么...?

void GLWidget::paintGL()
{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(0.0, 0.0, -5.0);
glRotatef(xRot / 16.0, 1.0, 0.0, 0.0);
glRotatef(yRot / 16.0, 0.0, 1.0, 0.0);
glRotatef(zRot / 16.0, 0.0, 0.0, 1.0);


glTranslatef(xTrans, yTrans, 0.0f);
glScalef(scale, scale, scale);
//draw function here
glPopMatrix();

}

最佳答案

您必须弹出矩阵 才能应用它

http://www.swiftless.com/tutorials/opengl/pop_and_push_matrices.html

这允许推送的矩阵实际完成计算并得到使用。

glPopMatrix(); //end the current object transformations

希望对您有所帮助。

关于c++ - Qt鼠标事件左键不翻译qt对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23705956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com