Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QVTKWidget中的RenderWinterActor_C++_Vtk_Qvtkwidget - Fatal编程技术网

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对您有什么影响,因为我没有按照定义显示。我想你可以解释一下它是如何产生的。它不起作用,我很担心。我要感谢。@CesarMalaver
vtkUserInteractionStyle
是我自己定制的用于用户交互的类,而不是在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();
*/