// 这个预处理器指令检查是否已经定义了_OCCVIEW_H_。如果已经定义,那么下面的代码都不会被编译。
#ifndef _OCCVIEW_H_
// 如果_OCCVIEW_H_还没有被定义,那么定义它。这是一种常见的防止头文件被重复包含的策略。
#define _OCCVIEW_H_
// 引入QGLWidget类,这是一个Qt的类,用于渲染OpenGL图形。
#include <QGLWidget>
// 引入AIS_InteractiveContext类,这是OpenCASCADE库的一个类,用于处理交互式上下文。
#include <AIS_InteractiveContext.hxx>
// 声明QMenu和QRubberBand类,这两个都是Qt的类,分别用于创建菜单和选择区域。
class QMenu;
class QRubberBand;
// 定义一个名为OccView的类,它继承自QWidget。QWidget是Qt的基类,所有用户界面对象都继承自这个类。
//! Adapted a QWidget for OpenCASCADE viewer.
class OccView : public QWidget
{
Q_OBJECT // 这是Qt的一个宏,它启用了Qt特有的一些功能,例如信号和槽。
public:
// 定义一个枚举,表示3D鼠标操作的类型。
//! mouse actions.
enum CurrentAction3d
{
CurAction3d_Nothing, // 无操作
CurAction3d_DynamicZooming, // 动态缩放
CurAction3d_WindowZooming, // 窗口缩放
CurAction3d_DynamicPanning, // 动态平移
CurAction3d_GlobalPanning, // 全局平移
CurAction3d_DynamicRotation // 动态旋转
};
public:
// OccView的构造函数,它接受一个QWidget指针作为参数,这个指针默认为nullptr。
//! constructor.
OccView(QWidget* parent);
// 定义一个函数,它返回一个AIS_InteractiveContext对象的句柄。这个对象可能是OccView的一个成员变量。
const Handle(AIS_InteractiveContext)& getContext() const;
signals: // Qt的关键字,定义了一个信号,当选择发生变化时,这个信号会被发出。
void selectionChanged(void);
public slots: // Qt的关键字,定义了一些槽函数,这些函数可以在其他地方被调用,也可以在收到特定信号时被自动调用。
// 定义了一些操作函数,例如平移、适应全部、重置、缩放和旋转。
//! operations for the view.
void pan(void);
void fitAll(void);
void reset(void);
void zoom(void);
void rotate(void);
// 这些函数可以被该类的其他成员函数以及派生类访问
protected:
// 返回一个指向QPaintEngine的指针,QPaintEngine负责在QWidget上进行低级别的绘制
virtual QPaintEngine* paintEngine() const;
// Paint events.
// 在窗口需要被重新绘制时,由系统自动调用,一般在此函数中进行自定义绘制操作
virtual void paintEvent(QPaintEvent* theEvent);
// 在窗口大小改变时,由系统自动调用,一般在此函数中进行窗口重绘操作以适应新的窗口大小
virtual void resizeEvent(QResizeEvent* theEvent);
// Mouse events.
// 在鼠标按下时,由系统自动调用
virtual void mousePressEvent(QMouseEvent* theEvent);
// 在鼠标释放时,由系统自动调用
virtual void mouseReleaseEvent(QMouseEvent* theEvent);
// 在鼠标移动时,由系统自动调用
virtual void mouseMoveEvent(QMouseEvent * theEvent);
// 在鼠标滚轮滚动时,由系统自动调用
virtual void wheelEvent(QWheelEvent * theEvent);
// Button events.
// 在鼠标左键按下时,由系统自动调用
virtual void onLButtonDown(const int theFlags, const QPoint thePoint);
// 在鼠标中键按下时,由系统自动调用
virtual void onMButtonDown(const int theFlags, const QPoint thePoint);
// 在鼠标右键按下时,由系统自动调用
virtual void onRButtonDown(const int theFlags, const QPoint thePoint);
// 在鼠标滚轮滚动时,由系统自动调用
virtual void onMouseWheel(const int theFlags, const int theDelta, const QPoint thePoint);
// 在鼠标左键释放时,由系统自动调用
virtual void onLButtonUp(const int theFlags, const QPoint thePoint);
// 在鼠标中键释放时,由系统自动调用
virtual void onMButtonUp(const int theFlags, const QPoint thePoint);
// 在鼠标右键释放时,由系统自动调用
virtual void onRButtonUp(const int theFlags, const QPoint thePoint);
// 在鼠标移动时,由系统自动调用
virtual void onMouseMove(const int theFlags, const QPoint thePoint);
// Popup menu.
// 在添加项到弹出菜单时,由系统自动调用
virtual void addItemInPopup(QMenu* theMenu);
protected:
// 初始化函数,具体初始化内容根据具体需求定义
void init(void);
// 弹出函数,具体弹出内容根据具体需求定义
void popup(const int x, const int y);
// 拖动事件处理函数,具体处理内容根据具体需求定义
void dragEvent(const int x, const int y);
// 输入事件处理函数,具体处理内容根据具体需求定义
void inputEvent(const int x, const int y);
// 移动事件处理函数,具体处理内容根据具体需求定义
void moveEvent(const int x, const int y);
// 多移动事件处理函数,具体处理内容根据具体需求定义
void multiMoveEvent(const int x, const int y);
// 多拖动事件处理函数,具体处理内容根据具体需求定义
void multiDragEvent(const int x, const int y);
// 多输入事件处理函数,具体处理内容根据具体需求定义
void multiInputEvent(const int x, const int y);
// 绘制橡皮筋函数,具体绘制内容根据具体需求定义
void drawRubberBand(const int minX, const int minY, const int maxX, const int maxY);
// 使用中键进行平移操作的处理函数,具体处理内容根据具体需求定义
void panByMiddleButton(const QPoint& thePoint);
// 这些成员变量都是私有的,只能在这个类内部访问
private:
// 定义一个类型为V3d_Viewer的句柄,V3d_Viewer是OpenCASCADE库的一个类,用于3D视图
//! the occ viewer.
Handle(V3d_Viewer) myViewer;
// 定义一个类型为V3d_View的句柄,V3d_View是OpenCASCADE库的一个类,用于3D视图
//! the occ view.
Handle(V3d_View) myView;
// 定义一个类型为AIS_InteractiveContext的句柄,AIS_InteractiveContext是OpenCASCADE库的一个类,用于交互式上下文
//! the occ context.
Handle(AIS_InteractiveContext) myContext;
// 定义四个类型为Standard_Integer的变量,用于保存鼠标位置
//! save the mouse position.
Standard_Integer myXmin;
Standard_Integer myYmin;
Standard_Integer myXmax;
Standard_Integer myYmax;
// 定义一个类型为CurrentAction3d的变量,用于保存当前鼠标的操作模式
//! the mouse current mode.
CurrentAction3d myCurrentMode;
// 定义一个类型为Standard_Boolean的变量,用于保存退化模式的状态
//! save the degenerate mode state.
Standard_Boolean myDegenerateModeIsOn;
// 定义一个类型为QRubberBand的指针,QRubberBand是Qt库的一个类,用于创建一个可以选择的矩形区域
//! rubber rectangle for the mouse selection.
QRubberBand* myRectBand;
};
#endif // _OCCVIEW_H_
occview.h解析注释
最新推荐文章于 2024-02-26 20:19:05 发布