//#define OCCRENDERMODE #include #include #include #include "RenderWidget.h" #include #include #include #include "FITK_Component/FITKWidget/FITKMdiArea.h" #include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h" #include "FITK_Kernel/FITKAppFramework/FITKComponentFactory.h" #include "FITK_Kernel/FITKAppFramework/FITKComponentInterface.h" #include "FITK_Kernel/FITKAppFramework/FITKComponents.h" #include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowInterface.h" #include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowVTK.h" //#include "FITK_Component/FITKRenderWindowOCC/FITKGraph3DWindowOCCInterface.h" #include "FITK_Kernel/FITKCore/FITKOperatorRepo.h" namespace GUI { RenderWidget::RenderWidget(MainWindow *mainWindow) : PanelWidgetBase(mainWindow) { this->setTitle(tr("Graphic Display")); m_MdiArea = new Comp::FITKMdiArea(this); // 如果当前没有FITK应用程序实例,则不执行后续操作 if (!FITKAPP) return; #ifdef OCCRENDERMODE // 尝试获取名为"Graph3DWindow"的三维渲染组件 AppFrame::FITKComponentInterface *graph3DCompBase = FITKAPP->getComponents()->getComponentByName("Graph3DWindowOCC"); auto graph3DComp = dynamic_cast(graph3DCompBase); // 如果获取失败,则不执行后续操作 if (nullptr == graph3DComp) return; // 获取三维渲染组件的界面,并将其作为一个子窗口添加到MDI区域 QWidget *graph3DWidget = graph3DComp->getWidget(1); auto id = m_MdiArea->addSubWidget(graph3DWidget, "Graph3DWindowOCC"); #else // 尝试获取名为"Graph3DWindow"的三维渲染组件 AppFrame::FITKComponentInterface *graph3DCompBase = FITKAPP->getComponents()->getComponentByName("Graph3DWindowVTK"); auto graph3DComp = dynamic_cast(graph3DCompBase); // 如果获取失败,则不执行后续操作 if (nullptr == graph3DComp) return; // 获取三维渲染组件的界面,并将其作为一个子窗口添加到MDI区域 QWidget *graph3DWidget = graph3DComp->getWidget(1); Comp::FITKGraph3DWindowVTK* graph3DVTKWidget = dynamic_cast(graph3DWidget); if (graph3DVTKWidget != nullptr) { graph3DVTKWidget->setIsShowActions(true); } auto id = m_MdiArea->addSubWidget(graph3DWidget, ""); #endif // OCCRENDERMODE this->setWidget(m_MdiArea); m_MdiArea->setLayoutType(Comp::FITKVportsLayoutType::CurrentMax); // 最大化显示 /*auto currentSubWidget = m_MdiArea->getSubWidget(id); if (currentSubWidget != nullptr) { currentSubWidget->showMaximized(); }*/ } Comp::FITKMdiArea * RenderWidget::getMdiArea() const { return m_MdiArea; } }