简介
本文实现在三维窗口中添加一个立方体,并实现以鼠标为锚点视图缩放、平移、旋转操作,效果见如下动图:

添加立方体
基于前面建立的三维窗口:
在OCCWidget构造函数末尾,添加立方体,并将其添加到上下文中显示该立方体(绘制立方体不是本文重点):
OCCWidget::OCCWidget(QWidget *parent)
: QWidget{
parent}
, m_dpiScale{
this->devicePixelRatioF()}
{
...
// 绘制立方体
TopoDS_Shape box = BRepPrimAPI_MakeBox(100, 100, 100);
Handle(AIS_Shape) box_AIS = new AIS_Shape(box);
m_context->Display(box_AIS, Standard_True);
}
显示效果如下:

可以看到在画面中央,出现了我们绘制的立方体,默认立方体以边显示,没有显示面,并且默认视角为等轴测视角。
视图缩放、平移、旋转实现
这里鼠标实现视图的缩放、平移以及旋转操作详细描述为:当鼠标滚轮向前滚动时,视图放大,反之视图缩小;按下鼠标右键不放并移动鼠标,视图跟随鼠标移动而平移;按下鼠标中键不放并移动鼠标,视图跟随鼠标移动而旋转。上述事件包含:鼠标滚动事件、鼠标右键按下事件、鼠标中键按下事件以及鼠标移动事件,因此,要实现视图缩放、平移、以及旋转操作,需要重写以下鼠标事件:
void mousePressEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



