当前位置:   article > 正文

Qt 集成VTK

Qt 集成VTK

Qt hello | 专注于Qt的技术分享平台

一,需求
集成VTK环境到Qt中


二,步骤

  1. 下载vtk源码,并使用cmake 结合vs2019编辑成dll库。
    GitHub - Kitware/VTK: Mirror of Visualization Toolkit repository
  2. Qt工程引入,库比较多,偷懒的情况下全部引入。
    pro文件配置如下:
    1. #VTK
    2. INCLUDEPATH += $PWD/3rd/VTK_8.2/include/vtk-8.2
    3. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkChartsCore-8.2.lib
    4. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonColor-8.2.lib
    5. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonComputationalGeometry-8.2.lib
    6. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonCore-8.2.lib
    7. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonDataModel-8.2.lib
    8. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonExecutionModel-8.2.lib
    9. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonMath-8.2.lib
    10. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonMisc-8.2.lib
    11. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonSystem-8.2.lib
    12. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkCommonTransforms-8.2.lib
    13. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkDICOMParser-8.2.lib
    14. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkDomainsChemistry-8.2.lib
    15. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkDomainsChemistryOpenGL2-8.2.lib
    16. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkexpat-8.2.lib
    17. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersAMR-8.2.lib
    18. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersCore-8.2.lib
    19. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersExtraction-8.2.lib
    20. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersFlowPaths-8.2.lib
    21. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersGeneral-8.2.lib
    22. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersGeneric-8.2.lib
    23. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersGeometry-8.2.lib
    24. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersHybrid-8.2.lib
    25. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersHyperTree-8.2.lib
    26. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersImaging-8.2.lib
    27. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersModeling-8.2.lib
    28. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersParallel-8.2.lib
    29. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersParallelImaging-8.2.lib
    30. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersProgrammable-8.2.lib
    31. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersSelection-8.2.lib
    32. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersSMP-8.2.lib
    33. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersSources-8.2.lib
    34. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersStatistics-8.2.lib
    35. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersTexture-8.2.lib
    36. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkFiltersVerdict-8.2.lib
    37. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkfreetype-8.2.lib
    38. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkGeovisCore-8.2.lib
    39. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkglew-8.2.lib
    40. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkGUISupportQt-8.2.lib
    41. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkGUISupportQtSQL-8.2.lib
    42. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkhdf5-8.2.lib
    43. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkhdf5_hl-8.2.lib
    44. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingColor-8.2.lib
    45. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingCore-8.2.lib
    46. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingFourier-8.2.lib
    47. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingGeneral-8.2.lib
    48. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingHybrid-8.2.lib
    49. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingMath-8.2.lib
    50. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingMorphological-8.2.lib
    51. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingSources-8.2.lib
    52. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingStatistics-8.2.lib
    53. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkImagingStencil-8.2.lib
    54. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkInfovisCore-8.2.lib
    55. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkInfovisLayout-8.2.lib
    56. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkInteractionImage-8.2.lib
    57. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkInteractionStyle-8.2.lib
    58. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkInteractionWidgets-8.2.lib
    59. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOAMR-8.2.lib
    60. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOCore-8.2.lib
    61. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOEnSight-8.2.lib
    62. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOExodus-8.2.lib
    63. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOExport-8.2.lib
    64. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOGeometry-8.2.lib
    65. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOImage-8.2.lib
    66. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOImport-8.2.lib
    67. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOInfovis-8.2.lib
    68. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOLegacy-8.2.lib
    69. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOLSDyna-8.2.lib
    70. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOMINC-8.2.lib
    71. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOMovie-8.2.lib
    72. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIONetCDF-8.2.lib
    73. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOParallel-8.2.lib
    74. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOParallelXML-8.2.lib
    75. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOPLY-8.2.lib
    76. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOSQL-8.2.lib
    77. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOVideo-8.2.lib
    78. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOXML-8.2.lib
    79. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkIOXMLParser-8.2.lib
    80. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkjpeg-8.2.lib
    81. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkjsoncpp-8.2.lib
    82. LIBS +=$PWD/3rd/VTK_8.2/lib/vtklibxml2-8.2.lib
    83. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkmetaio-8.2.lib
    84. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkNetCDF-8.2.lib
    85. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkParallelCore-8.2.lib
    86. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkpng-8.2.lib
    87. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkproj-8.2.lib
    88. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingAnnotation-8.2.lib
    89. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingContext2D-8.2.lib
    90. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingContextOpenGL2-8.2.lib
    91. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingCore-8.2.lib
    92. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingFreeType-8.2.lib
    93. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingImage-8.2.lib
    94. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingLabel-8.2.lib
    95. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingLOD-8.2.lib
    96. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingOpenGL2-8.2.lib
    97. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingQt-8.2.lib
    98. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingVolume-8.2.lib
    99. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkRenderingVolumeOpenGL2-8.2.lib
    100. LIBS +=$PWD/3rd/VTK_8.2/lib/vtksqlite-8.2.lib
    101. LIBS +=$PWD/3rd/VTK_8.2/lib/vtksys-8.2.lib
    102. LIBS +=$PWD/3rd/VTK_8.2/lib/vtktiff-8.2.lib
    103. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkverdict-8.2.lib
    104. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkViewsContext2D-8.2.lib
    105. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkViewsCore-8.2.lib
    106. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkViewsInfovis-8.2.lib
    107. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkViewsQt-8.2.lib
    108. LIBS +=$PWD/3rd/VTK_8.2/lib/vtkzlib-8.2.lib

3. UI文件中,创建一个QWidget,并将其提升为QVTKWidget.

4. 我们以显示一个stl文件为例。

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <vtkRenderer.h>
  5. #include <vtkRenderWindow.h>
  6. #include <vtkSmartPointer.h>
  7. QT_BEGIN_NAMESPACE
  8. namespace Ui {
  9. class Widget;
  10. }
  11. QT_END_NAMESPACE
  12. class Widget : public QWidget
  13. {
  14. Q_OBJECT
  15. public:
  16. Widget(QWidget *parent = nullptr);
  17. ~Widget();
  18. private:
  19. Ui::Widget *ui;
  20. vtkSmartPointer<vtkRenderer> Renderer;
  21. vtkSmartPointer<vtkRenderWindow> RenderWindow;
  22. };
  23. #endif // WIDGET_H
  1. #include <vtkSTLReader.h>
  2. #include <vtkPolyDataMapper.h>
  3. #include <vtkAutoInit.h>
  4. VTK_MODULE_INIT(vtkRenderingOpenGL2);
  5. VTK_MODULE_INIT(vtkInteractionStyle);
  6. VTK_MODULE_INIT(vtkRenderingFreeType);
  7. Widget::Widget(QWidget *parent)
  8. : QWidget(parent)
  9. , ui(new Ui::Widget)
  10. {
  11. ui->setupUi(this);
  12. RenderWindow=vtkSmartPointer<vtkRenderWindow>::New();
  13. Renderer = vtkSmartPointer<vtkRenderer>::New();
  14. Renderer->SetBackground(0.2, 0.2, 0.2);
  15. RenderWindow->AddRenderer(Renderer);
  16. ui->widget->SetRenderWindow(RenderWindow);
  17. std::string file = "C:\\Users\\keiler\\Desktop\\file\\you-hou-che-men.stl";
  18. vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
  19. reader->SetFileName(file.c_str());
  20. reader->Update();
  21. vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
  22. mapper->SetInputConnection(reader->GetOutputPort());
  23. vtkNew<vtkActor> partActor;
  24. partActor->SetMapper(mapper);
  25. Renderer->AddActor(partActor);
  26. }
  27. Widget::~Widget()
  28. {
  29. delete ui;
  30. }

5. 效果

集成VTK | Qt hello

6. 备注

集成VTK | Qt hello

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/507788
推荐阅读
相关标签
  

闽ICP备14008679号