在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView [英] Add and remove vtkChartXY/vtkContextView within a QVTKWidget renderer

查看:132
本文介绍了在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个 Qt MainWindow,它包含许多控件,包括一个 QVTKWidget.我可以使用 vtkContextView 轻松地将 vtkChartXY 对象添加到 QVTKWidget:

I currently have a Qt MainWindow, which holds a number of controls including a QVTKWidget. I can easily add a vtkChartXY object using a vtkContextView to the QVTKWidget:

vtkSmartPointer<vtkContextView> m_2Dview = vtkSmartPointer<vtkContextView>::New();
m_2Dview->SetRenderWindow(this->QVTKWidget->GetRenderWindow());

但是,一旦我在 QVTKWidget 中拥有它,我就找不到返回 3d 视图的方法.我尝试使用 vtkContextActor,但它导致了交互问题.但是,如果 vtkContextActor 是可行的方法,我愿意尝试任何建议.

However, once I have it in the QVTKWidget, I can not find a way to return to the 3d view. I tried using the vtkContextActor, but it led to interaction issues. However, I'm willing to try out any suggestions if the vtkContextActor is the way to go.

推荐答案

我为解决这个问题所做的是通过删除 vtkrenderwindow 上的 vtkrenderer>vtkrenderer 从 vtkRenderWindow 的指针先存储 vtkRenderer 指针后,然后将我存储的渲染器添加回 vtkRenderWindow.

What I did to resolve this was to reset the vtkrenderer on the vtkrenderwindow by removing the vtkrenderer from the pointer of the vtkRenderWindow after storing the vtkRenderer pointer first, and then added the renderer I had stored back into the vtkRenderWindow.

这至少为我重置了视图,下面是我使用的代码段.

This reset the view for me at least and below is the snippet I used.

AnalysisWindow 是我指向实际 vtkRenderer 的指针.

AnalysisWindow is my pointer to the actual vtkRenderer.

if(AnalysisWindow != NULL)
{
    vtkSmartPointer<vtkRenderWindow> win;
    win = AnalysisWindow->GetRenderWindow();
    win->RemoveRenderer(AnalysisWindow);
    win->AddRenderer(AnalysisWindow);
}

这篇关于在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆