在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView

Add and remove vtkChartXY/vtkContextView within a QVTKWidget renderer

本文关键字:删除 vtkChartXY vtkContextView 添加 QVTKWidget      更新时间:2023-10-16

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

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

但是,一旦我把它放在QVTKWidget,我就找不到返回3D视图的方法。我尝试使用vtkContextActor,但它导致了交互问题。但是,如果vtkContextActor是要走的路,我愿意尝试任何建议。

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

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

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

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