Qt中遇到的Debug/Relase两个不同模式下QVTKWidget控件的一个问题
Qt中遇到的Debug/Relase两个不同模式下QVTKWidget控件的一个问题
天蚕宝衣 发表于6个月前
Qt中遇到的Debug/Relase两个不同模式下QVTKWidget控件的一个问题
  • 发表于 6个月前
  • 阅读 40
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

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开发的数字图像处理软件中显示,并同时读取图片的尺寸图像深度通道数等基本属性。

这里写图片描述

共有 人打赏支持
粉丝 16
博文 222
码字总数 146332
×
天蚕宝衣
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: