Open CASCADE+Qt:实现简单的显示窗口(下)

简介

本文中介绍另一种常用方式来实现基于 OCCT+Qt 的简单的窗口程序,之前的实现方式参考:Open CASCADE+Qt:实现简单的窗口程序(上)

方式二

方式一中,OCCWidget构造函数中通过获取当前Qt窗口句柄,并创建WNT_Window,从而将OCCT窗口绑定在当前Qt窗口中。

OCCWidget::OCCWidget(QWidget *parent)
    : QWidget{
   parent}
{
   
    ...
    // 获取窗口句柄并创建WNT_Window
    WId window_handle = (WId) winId();
    Handle(WNT_Window) wind = new WNT_Window((Aspect_Handle) window_handle);
    // 设置视图窗口
    m_view->SetWindow(wind);
    if (!wind->IsMapped()) wind->Map();
}

尽管OCCT源文件中有该类对应的源文件以及头文件,但我们在最新版本的OCCT手册中却找不到该类。查看OCCT-7.0.0版本手册,可以看到,WNT_Window继承自Aspect_Window

从7.1.0版本开始,WNT_Window貌似被取消了:

虽然在源文件中,仍然可以找到该类对应的源文件,但可能处于某种原因,OCCT官方并不推荐原来的方式。

那么我们其实可以从Aspect_Window继承一个新类,Aspect_Window是一个抽象类,参考7.8.0版本的帮助文档,要实现以下其纯虚函数:

virtual void 	Map () const =0
virtual void 	Unmap () const =0
virtual Aspect_TypeOfResize 	DoResize () const =0
virtual Standard_Boolean 	DoMapping () const =0
virtual Standard_Boolean 	IsMapped () const =0
virtual Quantity_Ratio 	Ratio () const =0
virtual void 	Position (Standard_Integer &X1, Standard_Integer &Y1, Standard_Integer &X2, Standard_Integer &Y2) const =0
virtual void 	Size (Standard_Integer &Width, Standard_Integer &Height) const =0
virtual Aspect_Drawable 	NativeHandle () const =0
virtual Aspect_Drawable 	NativeParentHandle () const =0
virtual Aspect_FBConfig 	NativeFBConfig () const =0

虚函数的实现参考了WNT_Window源文件以及开源程序Mayo

OCCT_Window::OCCT_Window(QWidget
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值