1.首先在occview视图类里创建动作枚举类型和一些变量,
protected:
enum CurrentAction{
CurrentAction_Nothing,//
CurrentAction_Panning,//平移,按住鼠标左键和右键并拖动进行平移操作
CurrentAction_Zooming,//缩放,滚动滚轮进行缩放
CurrentAction_Rotation//旋转,按住鼠标中间并拖动进行旋转
};
private:
Standard_Integer m_x;//记录平移坐标X
Standard_Integer m_y;//记录平移坐标Y
CurrentAction m_curremt_mode;//记录三维场景转换模式
2.在cpp文件中重写鼠标事件
void OccView::wheelEvent(QWheelEvent *event)//滚轮事件实现缩放
{
m_view->StartZoomAtPoint(event->pos().x(),event->pos().y());
m_view->ZoomAtPoint(0,0,event->angleDelta().y(),0);
}
void OccView::mousePressEvent(QMouseEvent *event)//鼠标案件事件,左键和右键一起按下设置为平移模式,中间建按下设置为旋转模式
{
if(event->buttons()&Qt::LeftButton&&event->buttons()&Qt::RightButton)//event->buttons()实时更新按钮并判断;如果不加会导致左键之后,不管再按哪个键一直是平移
{
m_curremt_mode=CurrentAction_Panni