C++ QVTKWidget中的RenderWinterActor
我是C++ QVTKWidget中的RenderWinterActor,c++,vtk,qvtkwidget,C++,Vtk,Qvtkwidget,我是VTK中的新用户,我需要在 QTCreator的QVTKWidget。我有这个: vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->
VTK
中的新用户,我需要在
QTCreator的QVTKWidget
。我有这个:
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderWindow->Render();
renderWindowInteractor->Initialize();
对不起,我是哥伦比亚人。QVTKWidget
有一个SetRenderWindow
方法,允许您在QVTK引擎中设置渲染窗口。如果已将相同的renderWindow设置为RenderWindowWinterActor,则它应该可以工作
下面是我用于自定义InteractionStyle的代码示例
QVTKWidget *engine = new QVTKWidget ();
// Setup window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
// Setup renderer
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderWindow->AddRenderer(renderer);
engine->SetRenderWindow(renderWindow); // make the link between VTK and QT
// create stuff for user interaction
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
/*
vtkSmartPointer<vtkUserInteractionStyle> inter = vtkUserInteractionStyle::New ();
inter->SetDefaultRenderer(renderer);
renderWindowInteractor->SetInteractorStyle( inter );
*/
// make the link between the renderwindow and the interactor
renderWindowInteractor->SetRenderWindow ( renderWindow );
engine->show();
renderWindow->Render ();
renderWindowInteractor->Initialize();
QVTKWidget*engine=newqvtkwidget();
//设置窗口
vtkSmartPointer渲染窗口=
vtkSmartPointer::New();
//设置渲染器
VTKSmart指针渲染器=
vtkSmartPointer::New();
renderWindow->AddRenderer(渲染器);
引擎->设置渲染窗口(渲染窗口);//在VTK和QT之间建立链接
//为用户交互创建内容
vtkSmartPointer渲染器Windows WinterActor=
vtkSmartPointer::New();
/*
vtkSmartPointer=vtkUserInteractionStyle::New();
inter->SetDefaultRenderer(渲染器);
RenderWindowWinterActor->SetInteractorStyle(inter);
*/
//在renderwindow和交互器之间建立链接
RenderWindowWinterActor->SetRenderWindow(renderWindow);
引擎->显示();
renderWindow->Render();
renderWindowInteractor->Initialize();
找出不需要使用的绑定小部件,首先可以解决这个问题,代码测试它可以工作
/////////////////////////////////////////////////////
//CODE author:Bing_Lee 2018-9-13
/////////////////////////////////////////////////////
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<QVTKWidget> widget = vtkSmartPointer<QVTKWidget>::NEW();
widget->SetRenderWindow(renderWindow);
/*//comment
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
*/
renderer->AddActor(actor);
/*//comment
renderWindow->Render();
renderWindowInteractor->Initialize();
*/
/////////////////////////////////////////////////////
//代码作者:Bing_Lee 2018-9-13
/////////////////////////////////////////////////////
vtkSmartPointer=vtkSmartPointer::New();
vtkSmartPointer renderWindow=vtkSmartPointer::New();
renderWindow->AddRenderer(渲染器);
vtkSmartPointer小部件=vtkSmartPointer::NEW();
小部件->设置渲染窗口(渲染窗口);
/*//评论
vtkSmartPointer renderWindowInteractor=vtkSmartPointer::New();
RenderWindowWinterActor->SetRenderWindow(renderWindow);
*/
渲染器->AddActor(actor);
/*//评论
renderWindow->Render();
renderWindowInteractor->Initialize();
*/
感谢您的回复,我有一个问题,vtkUserInteractionStyle对您有什么影响,因为我没有按照定义显示。我想你可以解释一下它是如何产生的。它不起作用,我很担心。我要感谢。@CesarMalavervtkUserInteractionStyle
是我自己定制的用于用户交互的类,而不是在VTK库中。但它应该在没有任何限制的情况下起作用。我编辑我的答案来评论这些行
/////////////////////////////////////////////////////
//CODE author:Bing_Lee 2018-9-13
/////////////////////////////////////////////////////
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<QVTKWidget> widget = vtkSmartPointer<QVTKWidget>::NEW();
widget->SetRenderWindow(renderWindow);
/*//comment
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
*/
renderer->AddActor(actor);
/*//comment
renderWindow->Render();
renderWindowInteractor->Initialize();
*/