QT QVTKWidget与 render 和 imageViewer2 结合的显示问题

https://blog.csdn.net/menjiawan/article/details/45192039

下面链接是官网的例子:可以看看

https://vtk.org/Wiki/VTK/Examples/Cxx/Qt

 

1、QVTKWidget 与 imageViewer2 结合

#include <QApplication>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>

#include <QVTKWidget.h>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    
    QVTKWidget widget;
    widget.resize( 256, 256 );
    
    vtkSmartPointer<vtkDICOMImageReader> reader =vtkSmartPointer<vtkDICOMImageReader>::New();
    reader->SetDirectoryName("/Users/mac/Desktop/CT数据/tsing" );// path.toUtf8().constData()
    reader->Update();
    
    int dims[3];double spacing[3];double origin[3];
    reader->GetOutput()->GetDimensions(dims);
    reader->GetOutput()->GetSpacing(spacing);
    reader->GetOutput()->GetOrigin(origin);
    std::cout << "dims:" << dims[0] << ", " << dims[1] << ", " << dims[2] << std::endl;
    std::cout << "spacing:" << spacing[0] << ", " << spacing[1] << ", " << spacing[2] << std::endl;
    std::cout << "origin:" << origin[0] << ", " << origin[1] << ", " << origin[2] << std::endl;
    NodeContainer::Pointer  seeds = NodeContainer::New();
    seeds->Initialize();

    vtkSmartPointer<vtkImageViewer2> viewer =vtkSmartPointer<vtkImageViewer2>::New();
    viewer->SetInputData(reader->GetOutput());
    viewer->SetSliceOrientationToXY();
    viewer->GetRenderer()->SetBackground(1,1,1);
    
    vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    viewer->SetupInteractor(rwi);
    
    vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
    rwi->SetInteractorStyle( style );

  //  viewer->SetupInteractor(widget.GetRenderWindow()->GetInteractor());
  //因为我上面自己定义了交互函数(rwi和style),这里这个默认的交互就不用要了。
  
    
    widget.SetRenderWindow(viewer->GetRenderWindow());
   
    widget.show();
    
    app.exec();
    
    return EXIT_SUCCESS;
}

2、QVTKWidget 与 render 结合

https://vtk.org/Wiki/VTK/Examples/Cxx/Qt/RenderWindowNoUiFile

 

 

备注:主要区别是最后的窗口设置。

 

//第一种:
      /* viewer->GetRenderer()->ResetCamera();//need
     qvtkWidgetLeft->SetRenderWindow(viewer->GetRenderWindow());
     qvtkWidgetLeft->GetRenderWindow()->SetInteractor(rwi);
     qvtkWidgetLeft->GetRenderWindow()->Render();*/


//第二种  
      /*  viewer->SetRenderer(render);
        viewer->SetRenderWindow(qvtkWidgetLeft->GetRenderWindow());
        viewer->Render();
       // viewer->GetRenderer()->ResetCamera();
        viewer->SetupInteractor(qvtkWidgetLeft->GetRenderWindow()->GetInteractor());
        qvtkWidgetLeft->GetInteractor()->SetInteractorStyle(style);
        viewer->GetImageActor()->InterpolateOff();
      //  render->ResetCamera();
        render->DrawOn();
        qvtkWidgetLeft->GetRenderWindow()->Render();*/


//第三种:
    
    /*viewer->SetupInteractor(qvtkWidgetLeft->GetRenderWindow()->GetInteractor());
     qvtkWidgetLeft->SetRenderWindow(viewer->GetRenderWindow());
    qvtkWidgetLeft->GetInteractor()->SetInteractorStyle(style);
    viewer->GetRenderer()->ResetCamera();
    viewer->Render();*/

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值