Qt中遇到的Debug/Relase两个不同模式下QVTKWidget控件的一个问题

QVTKWidget控件不是Qt中默认控件,需要手动编译。用CMake编译VTK过程中,需要选择VTK支持QT。网络上有很多教程,不再重复了。

但有一点要提醒大家:只需要将Release版本中QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib放在designer文件夹下就可以了,QVTK.dll不需要放入该文件夹下,否则会出现:

qwidget: must construct a qapplication before a qpaintde 错误,因为Release与Debug中DLL混合在一起。

vtkImageViewer2类中的对象适合于显示图像,对vtkActor、vtkRender等已经做了封装。

测试代码如下:

    // 创建vtk图像阅读器2类的对象用来显示其他对象读取到内存中的图像。
    m_pImageViewer = vtkSmartPointer<vtkImageViewer2>::New();
    // 渲染场景。
    m_pRenderder = vtkSmartPointer<vtkRenderer>::New();     
    // 设置m_QVTKWidget的渲染器。
    ui->m_QVTKWidget->GetRenderWindow()->AddRenderer(m_pRenderder);
    // 用vtkJPEGReader类的对象读取JPG图像,即将磁盘中的图像加载进内存中。
    vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
    reader->SetFileName(fileName_str);
    // 将reader的输出作为m_pImageViewer的输入,并设置m_pImageViewer与渲染器m_pRenderer的关联。
    m_pImageViewer->SetInput(reader->GetOutput());
    m_pImageViewer->UpdateDisplayExtent();
    // 设置为同一个渲染窗口。
    m_pImageViewer->SetRenderWindow(ui->m_QVTKWidget->GetRenderWindow());
    // 设置渲染场景。
    m_pImageViewer->SetRenderer(m_pRenderder);       
    // 交互方式。
    m_pImageViewer->SetupInteractor(ui->m_QVTKWidget->GetRenderWindow()->GetInteractor());
    // 默认就是这个方向的。    
    m_pImageViewer->SetSliceOrientationToXY(); 
    m_pImageViewer->GetImageActor()->InterpolateOff();
    m_pRenderder->ResetCamera();
    m_pRenderder->DrawOn();
    // 自动绘制出图像。
    ui->m_QVTKWidget->GetRenderWindow()->Render();

QVTKWidget部件显示二维图像的效果如下图,在基于Qt开发的数字图像处理软件中显示,并同时读取图片的尺寸图像深度通道数等基本属性。

这里写图片描述

转载于:https://my.oschina.net/wangsifangyuan/blog/994793

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值