在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView [英] Add and remove vtkChartXY/vtkContextView within a QVTKWidget renderer
问题描述
我目前有一个 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屋!