全局变量(定义在类中的):
QPoint lastPos;//鼠标的位置
GLfloat xrot=yrot=zrot=0;//旋转轴
void GLWidget16::mousePressEvent(QMouseEvent *e)
{
lastPos = e->pos();
}
void GLWidget16::mouseMoveEvent(QMouseEvent *e)
{
GLfloat dx = GLfloat(e->x() - lastPos.x()) / width();
GLfloat dy = GLfloat(e->y() - lastPos.y()) / height();
if (e->buttons() & Qt::LeftButton) {
xrot -= 180 * dy;
yrot -= 180 * dx;
updateGL();
} else if (e->buttons() & Qt::RightButton) {
xrot += 180 * dy;
zrot += 180 * dx;
updateGL();
}
lastPos = e->pos();
}
void GLWidget16::wheelEvent(QWheelEvent *e)
{
double numDegrees = -e->delta() / 8.0;
double numSteps = numDegrees / 15.0;
scaling *= pow(1.125, numSteps);
updateGL();
}
QPoint lastPos;//鼠标的位置
GLfloat xrot=yrot=zrot=0;//旋转轴
void GLWidget16::mousePressEvent(QMouseEvent *e)
{
lastPos = e->pos();
}
void GLWidget16::mouseMoveEvent(QMouseEvent *e)
{
GLfloat dx = GLfloat(e->x() - lastPos.x()) / width();
GLfloat dy = GLfloat(e->y() - lastPos.y()) / height();
if (e->buttons() & Qt::LeftButton) {
xrot -= 180 * dy;
yrot -= 180 * dx;
updateGL();
} else if (e->buttons() & Qt::RightButton) {
xrot += 180 * dy;
zrot += 180 * dx;
updateGL();
}
lastPos = e->pos();
}
void GLWidget16::wheelEvent(QWheelEvent *e)
{
double numDegrees = -e->delta() / 8.0;
double numSteps = numDegrees / 15.0;
scaling *= pow(1.125, numSteps);
updateGL();
}