国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt通過QVTKWidget顯示VTK交互窗口

這篇具有很好參考價(jià)值的文章主要介紹了Qt通過QVTKWidget顯示VTK交互窗口。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


??項(xiàng)目需要將一個(gè)基于控制臺的VTK程序合并到Qt界面中通過QVTKWidget顯示,由于第一次接觸VTK,很多東西不懂,網(wǎng)上關(guān)于VTK和Qt合并的資料又比較少,比較亂,折磨了兩天實(shí)現(xiàn)了合并,現(xiàn)總結(jié)如下。

1. Qt Designer添加QVTKWidget插件

??首先CMake編譯vtk源碼,我的環(huán)境VS2019社區(qū)版+VTK8.2.0+Qt5.12.0,完全按照這個(gè)鏈接的步驟一步步進(jìn)行編譯即可。一定要看仔細(xì)編譯的每個(gè)步驟?。?!
??CMake編譯vtk源碼步驟鏈接
??如果用不到PCL按照原文進(jìn)行到第5步即可,第6步及后面步驟可以忽略,忽略原文關(guān)于PCL的任何步驟。
注意: 只能復(fù)制release版本下的QVTKWidgetPlugin.dll、QVTKWidgetPlugin.exp、QVTKWidgetPlugin.lib,如果復(fù)制Debug版本下的 Qt Designer打不開,不知道為什么也許是個(gè)bug,但這并不影響后續(xù)在VS中Debug環(huán)境下的使用,此時(shí)應(yīng)該可以在Qt Designer左邊欄最下面看到QVTKWidget插件。
Qt通過QVTKWidget顯示VTK交互窗口

2. VS中配置工程屬性

說明:我的編譯好后的文件夾路徑為C:\VTK8.2.0

  1. 包含目錄:C:\VTK8.2.0\VTK-install\include\vtk-8.2

  2. 庫目錄:C:\VTK8.2.0\VTK-install\lib

    Qt通過QVTKWidget顯示VTK交互窗口

  3. 調(diào)試環(huán)境:PATH=%PATH%;D:\Software\Qt\Qt5.12.0\5.12.0\msvc2017_64\bin;C:\VTK8.2.0\VTK-install\bin;

    Qt通過QVTKWidget顯示VTK交互窗口

  4. 附加依賴項(xiàng):就是C:\VTK8.2.0\VTK-install\lib文件夾下所有.lib文件的文件名,可以通過批處理命令輕松快捷得到所有的.lib文件名。

    獲取某一文件夾下文件名的批處理步驟:
    新建一個(gè)1.txt,輸入如下命令:
    dir /a-d /b *>scr.txt
    再將1.txt后綴名改為.bat即1.bat,運(yùn)行就會生成一個(gè)scr.txt,里面存放的是文件名,復(fù)制所有.lib文件名(即去掉1.bat和scr.txt)到附加依賴項(xiàng)即可完成配置。
    Qt通過QVTKWidget顯示VTK交互窗口

    這是我得到的.lib文件名,嫌麻煩的可以直接復(fù)制:

    vtkChartsCore-8.2_gd.lib
    vtkCommonColor-8.2_gd.lib
    vtkCommonComputationalGeometry-8.2_gd.lib
    vtkCommonCore-8.2_gd.lib
    vtkCommonDataModel-8.2_gd.lib
    vtkCommonExecutionModel-8.2_gd.lib
    vtkCommonMath-8.2_gd.lib
    vtkCommonMisc-8.2_gd.lib
    vtkCommonSystem-8.2_gd.lib
    vtkCommonTransforms-8.2_gd.lib
    vtkDICOMParser-8.2_gd.lib
    vtkDomainsChemistry-8.2_gd.lib
    vtkDomainsChemistryOpenGL2-8.2_gd.lib
    vtkdoubleconversion-8.2_gd.lib
    vtkexodusII-8.2_gd.lib
    vtkexpat-8.2_gd.lib
    vtkFiltersAMR-8.2_gd.lib
    vtkFiltersCore-8.2_gd.lib
    vtkFiltersExtraction-8.2_gd.lib
    vtkFiltersFlowPaths-8.2_gd.lib
    vtkFiltersGeneral-8.2_gd.lib
    vtkFiltersGeneric-8.2_gd.lib
    vtkFiltersGeometry-8.2_gd.lib
    vtkFiltersHybrid-8.2_gd.lib
    vtkFiltersHyperTree-8.2_gd.lib
    vtkFiltersImaging-8.2_gd.lib
    vtkFiltersModeling-8.2_gd.lib
    vtkFiltersParallel-8.2_gd.lib
    vtkFiltersParallelImaging-8.2_gd.lib
    vtkFiltersPoints-8.2_gd.lib
    vtkFiltersProgrammable-8.2_gd.lib
    vtkFiltersSelection-8.2_gd.lib
    vtkFiltersSMP-8.2_gd.lib
    vtkFiltersSources-8.2_gd.lib
    vtkFiltersStatistics-8.2_gd.lib
    vtkFiltersTexture-8.2_gd.lib
    vtkFiltersTopology-8.2_gd.lib
    vtkFiltersVerdict-8.2_gd.lib
    vtkfreetype-8.2_gd.lib
    vtkGeovisCore-8.2_gd.lib
    vtkgl2ps-8.2_gd.lib
    vtkglew-8.2_gd.lib
    vtkGUISupportQt-8.2_gd.lib
    vtkGUISupportQtOpenGL-8.2_gd.lib
    vtkGUISupportQtSQL-8.2_gd.lib
    vtkhdf5-8.2_gd.lib
    vtkhdf5_hl-8.2_gd.lib
    vtkImagingColor-8.2_gd.lib
    vtkImagingCore-8.2_gd.lib
    vtkImagingFourier-8.2_gd.lib
    vtkImagingGeneral-8.2_gd.lib
    vtkImagingHybrid-8.2_gd.lib
    vtkImagingMath-8.2_gd.lib
    vtkImagingMorphological-8.2_gd.lib
    vtkImagingSources-8.2_gd.lib
    vtkImagingStatistics-8.2_gd.lib
    vtkImagingStencil-8.2_gd.lib
    vtkInfovisCore-8.2_gd.lib
    vtkInfovisLayout-8.2_gd.lib
    vtkInteractionImage-8.2_gd.lib
    vtkInteractionStyle-8.2_gd.lib
    vtkInteractionWidgets-8.2_gd.lib
    vtkIOAMR-8.2_gd.lib
    vtkIOAsynchronous-8.2_gd.lib
    vtkIOCityGML-8.2_gd.lib
    vtkIOCore-8.2_gd.lib
    vtkIOEnSight-8.2_gd.lib
    vtkIOExodus-8.2_gd.lib
    vtkIOExport-8.2_gd.lib
    vtkIOExportOpenGL2-8.2_gd.lib
    vtkIOExportPDF-8.2_gd.lib
    vtkIOGeometry-8.2_gd.lib
    vtkIOImage-8.2_gd.lib
    vtkIOImport-8.2_gd.lib
    vtkIOInfovis-8.2_gd.lib
    vtkIOLegacy-8.2_gd.lib
    vtkIOLSDyna-8.2_gd.lib
    vtkIOMINC-8.2_gd.lib
    vtkIOMovie-8.2_gd.lib
    vtkIONetCDF-8.2_gd.lib
    vtkIOParallel-8.2_gd.lib
    vtkIOParallelXML-8.2_gd.lib
    vtkIOPLY-8.2_gd.lib
    vtkIOSegY-8.2_gd.lib
    vtkIOSQL-8.2_gd.lib
    vtkIOTecplotTable-8.2_gd.lib
    vtkIOVeraOut-8.2_gd.lib
    vtkIOVideo-8.2_gd.lib
    vtkIOXML-8.2_gd.lib
    vtkIOXMLParser-8.2_gd.lib
    vtkjpeg-8.2_gd.lib
    vtkjsoncpp-8.2_gd.lib
    vtklibharu-8.2_gd.lib
    vtklibxml2-8.2_gd.lib
    vtklz4-8.2_gd.lib
    vtklzma-8.2_gd.lib
    vtkmetaio-8.2_gd.lib
    vtkNetCDF-8.2_gd.lib
    vtkogg-8.2_gd.lib
    vtkParallelCore-8.2_gd.lib
    vtkpng-8.2_gd.lib
    vtkproj-8.2_gd.lib
    vtkpugixml-8.2_gd.lib
    vtkRenderingAnnotation-8.2_gd.lib
    vtkRenderingContext2D-8.2_gd.lib
    vtkRenderingContextOpenGL2-8.2_gd.lib
    vtkRenderingCore-8.2_gd.lib
    vtkRenderingFreeType-8.2_gd.lib
    vtkRenderingGL2PSOpenGL2-8.2_gd.lib
    vtkRenderingImage-8.2_gd.lib
    vtkRenderingLabel-8.2_gd.lib
    vtkRenderingLOD-8.2_gd.lib
    vtkRenderingOpenGL2-8.2_gd.lib
    vtkRenderingQt-8.2_gd.lib
    vtkRenderingVolume-8.2_gd.lib
    vtkRenderingVolumeOpenGL2-8.2_gd.lib
    vtksqlite-8.2_gd.lib
    vtksys-8.2_gd.lib
    vtktheora-8.2_gd.lib
    vtktiff-8.2_gd.lib
    vtkverdict-8.2_gd.lib
    vtkViewsContext2D-8.2_gd.lib
    vtkViewsCore-8.2_gd.lib
    vtkViewsInfovis-8.2_gd.lib
    vtkViewsQt-8.2_gd.lib
    vtkzlib-8.2_gd.lib

    有的可能需要加上Qt的幾個(gè)附加依賴項(xiàng):

    D:\Software\Qt\Qt5.12.0\5.12.0\msvc2017_64\lib\Qt5Core.lib
    D:\Software\Qt\Qt5.12.0\5.12.0\msvc2017_64\lib\Qt5Gui.lib
    D:\Software\Qt\Qt5.12.0\5.12.0\msvc2017_64\lib\Qt5Widgets.lib

    完成上述步驟后即可正常在Qt界面顯示VTK的交互窗口或者圖形。

3. Qt顯示VTK交互窗口(重點(diǎn)!)

??第一次接觸VTK,不太懂VTK的一些概念,并且還要在Qt的QVTKWidhet中顯示,網(wǎng)上的資料很少,僅有的也比較亂,這篇博客給了我一些啟發(fā)和幫助,鏈接:QT基于VTK的體渲染程序
稍微看了一下《VTK圖形圖像開發(fā)進(jìn)階》張曉東,羅火靈編著這本書,很有幫助。
Qt通過QVTKWidget顯示VTK交互窗口

vtkRenderer* ren = vtkRenderer::New();
ui.qvtkWidget->GetRenderWindow()->AddRenderer(ren);
vtkSmartPointer<vtkRenderWindowInteractor> iren = ui.qvtkWidget->GetRenderWindow()->GetInteractor();
iren->SetRenderWindow(ui.qvtkWidget->GetRenderWindow());
/*               導(dǎo)入數(shù)據(jù),添加變量條等程序                */
//刷新渲染
ui.qvtkWidget->GetRenderWindow()->Render();
//初始化交互器
iren->Initialize();
//啟動交互器
iren->Start();

這段在QVTKWidget顯示交互窗口程序的重點(diǎn)就是

vtkSmartPointer iren = ui.qvtkWidget->GetRenderWindow()->GetInteractor();

ui.qvtkWidget->GetRenderWindow()
代替
vtkRenderWindow* renWin = vtkRenderWindow::New();的renWin

4.一些小問題(Last but not least)

4.1 qvtkWidget = new QVTKWidget(centralWidget);未經(jīng)處理的異常

Qt通過QVTKWidget顯示VTK交互窗口

參考資料
主函數(shù)前加上這三行:

#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

Qt通過QVTKWidget顯示VTK交互窗口

4.2 消除vtk版本警告

除了主窗口,還會彈出一個(gè)關(guān)于VTK版本的警告窗口,這是我們不想看到的,加上一句話就可關(guān)閉這個(gè)警告。
Qt通過QVTKWidget顯示VTK交互窗口

//消除vtk版本警告
	vtkOutputWindow::SetGlobalWarningDisplay(0);

4.3 基于控制臺的VTK程序合并到Qt界面(重點(diǎn))

項(xiàng)目中我來負(fù)責(zé)前端的整合,團(tuán)隊(duì)中另一位小伙寫的VTK程序是基于控制臺的,也就是運(yùn)行會彈出一個(gè)win32OpenGL窗口,我的任務(wù)就是把這個(gè)窗口在Qt界面中用QVTKWidget插件顯示,如本文第3部分所描述的。
Qt通過QVTKWidget顯示VTK交互窗口

??合并或者移植程序看似很簡單其實(shí)有時(shí)是個(gè)很麻煩的事情,尤其是一些配置的問題,這位團(tuán)隊(duì)成員給我的VTK程序所用的VTK編譯后的文件并不完全一樣因?yàn)樗麤]有涉及到Qt且有他自己寫的頭文件,經(jīng)過兩天的折騰,各種排列組合進(jìn)行試驗(yàn),最后合并成功。
??令基于控制臺的編譯文件為A,自己按照本文第1部分提到的步驟進(jìn)行編譯得到的文件為B,A和B大多數(shù)文件是一致的,此時(shí)就把A文件夾中的文件全部復(fù)制到B文件夾中,如果有相同文件名的點(diǎn)擊跳過該文件,不要點(diǎn)擊替換目標(biāo)中的文件,還是要以Qt版本的為準(zhǔn),不然會出現(xiàn)很多意想不到的錯(cuò)誤?。。?/mark>

Qt通過QVTKWidget顯示VTK交互窗口
此時(shí)再在合并后的lib文件夾下運(yùn)行批處理獲得新的文件名,添加到工程配置中的依賴項(xiàng),此時(shí)再按照第3部分修改代碼,完成合并。文章來源地址http://www.zghlxwxcb.cn/news/detail-404998.html

4.4 一些關(guān)于Qt結(jié)合VTK的資料

  1. 關(guān)于VTK在不同版本的Qt中的插件類別的不同
    Study-VTK:QVTKWidget、QVTKOpenGLWidget、QVTKOpenGLNativeWidget、QVTKWidget2 區(qū)別

到了這里,關(guān)于Qt通過QVTKWidget顯示VTK交互窗口的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【VTK】VTK 顯示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK

    【VTK】VTK 顯示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK

    知識不是單獨(dú)的,一定是成體系的。更多我的個(gè)人總結(jié)和相關(guān)經(jīng)驗(yàn)可查閱這個(gè)專欄:Visual Studio。 編號 內(nèi)容 1 【Visual Studio】在 Windows 上使用 Visual Studio 構(gòu)建 VTK 2 【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK 3 【VTK】VTK 顯示小球例子,在 Windows 上使用 Visual Studio 配

    2024年02月17日
    瀏覽(35)
  • 【VTK】讀取一個(gè) STL 文件,并使用 Qt 顯示出來,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK

    【VTK】讀取一個(gè) STL 文件,并使用 Qt 顯示出來,在 Windows 上使用 Visual Studio 配合 Qt 構(gòu)建 VTK

    知識不是單獨(dú)的,一定是成體系的。更多我的個(gè)人總結(jié)和相關(guān)經(jīng)驗(yàn)可查閱這個(gè)專欄:Visual Studio。 直接先把效果放出來,有需要就往下看。 骷髏3D打印3D模型

    2024年02月14日
    瀏覽(26)
  • VS+QT+VTK三維網(wǎng)格顯示-點(diǎn)面選擇-法線法向量顯示-配準(zhǔn)-分割窗體程序

    VS+QT+VTK三維網(wǎng)格顯示-點(diǎn)面選擇-法線法向量顯示-配準(zhǔn)-分割窗體程序

    程序示例精選 VS+QT+VTK三維網(wǎng)格顯示-點(diǎn)面選擇-法線法向量顯示-配準(zhǔn)-分割窗體程序 如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見文章底部個(gè)人 QQ 名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助! 這篇博客針對VS+QT+VTK三維網(wǎng)格顯示-點(diǎn)面選擇-法線法向量顯示-配準(zhǔn)-分割窗體程序編寫代碼,代碼整潔,規(guī)則

    2024年02月10日
    瀏覽(19)
  • 【QT項(xiàng)目:視頻播放器——Qt opengl編程】通過shader完成顯示yuv

    【QT項(xiàng)目:視頻播放器——Qt opengl編程】通過shader完成顯示yuv

    通過Qt opengl不是為了3D繪制,而是為了將視頻繪制起來 使用opengl 可以極大降低yuv轉(zhuǎn)rgb的轉(zhuǎn)換開銷 1、為什么用QT的opengl 簡單,界面可以自動疊加 void paintGL(); // 具體的繪制寫在該函數(shù)里 void initializeGL(); // 材質(zhì)初始化 void resizeGL(int width, int height); // 當(dāng)窗口發(fā)生變化(縮放) QO

    2023年04月09日
    瀏覽(27)
  • pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的簡單教程以及案例,利用PCLVisualizer顯示點(diǎn)云

    pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的簡單教程以及案例,利用PCLVisualizer顯示點(diǎn)云

    先添加一個(gè)帶有ui的QT應(yīng)用程序。 先拖出來一個(gè)QOpenGLWidget控件 修改布局如下: 然后將QOpenGLWidget控件提升為QVTKOpenGLNativeWidget控件,步驟如下: 右擊QOpenGLWidget窗口,選擇【提示為...】 ?輸入提升的類名稱為QVTKOpenGLNativeWidget ?此時(shí)需要把自動生成的qvtkopenglnativewidget.h修改為QV

    2024年01月25日
    瀏覽(40)
  • qt怎么一個(gè)程序顯示兩個(gè)窗口

    qt怎么一個(gè)程序顯示兩個(gè)窗口

    首先我們要把.ui文件的QMainWindow改成QDialog(用記事本) ?然后把.ui對應(yīng)的頭文件和.cpp 出現(xiàn)QMainWindow改成QDialog 如圖重點(diǎn)其包含頭文件定義也記得修改 ? ?然后非模態(tài)顯示,才不堵塞主窗口

    2024年02月12日
    瀏覽(31)
  • 基于WPF Opencv實(shí)現(xiàn)一個(gè)圖像可移動、縮放和可交互的顯示窗口

    基于WPF Opencv實(shí)現(xiàn)一個(gè)圖像可移動、縮放和可交互的顯示窗口

    學(xué)習(xí)Halcon的HSmartWindowControl窗口控件,用WPF和Opencv仿照了一個(gè)。 顯示控件的主體是兩個(gè)Canvas: Root Canvas是背景,刷上了網(wǎng)格; 把要顯示的圖像作為Image Canvas的圖像背景, 后面圖像的移動,縮放,實(shí)質(zhì)都是Image Canvas。 可交互,學(xué)習(xí)的是Halcon的繪圖對象,WPF的Path來實(shí)現(xiàn)的,Path類

    2023年04月09日
    瀏覽(66)
  • 可視可交互!在全志H618上用OpenCV讀取圖像顯示到PyQt5窗口上

    可視可交互!在全志H618上用OpenCV讀取圖像顯示到PyQt5窗口上

    OpenCV能夠處理圖像、視頻、深度圖像等各種類型的視覺數(shù)據(jù),在某些情況下,盡管OpenCV可以顯示窗口,但PyQt5可能更適合用于創(chuàng)建復(fù)雜的交互式應(yīng)用程序,而自帶GPU的H618就成為了這些圖像顯示的最佳載體。 這里分享一個(gè)代碼,功能是使用圖像處理庫opencv從攝像頭獲取數(shù)據(jù),縮

    2024年02月01日
    瀏覽(25)
  • VTK--交互方式vtkInteractorStyleTrackballCamera

    VTK--交互方式vtkInteractorStyleTrackballCamera

    很高興在雪易的CSDN遇見你?,給你糖糖 歡迎大家加入 雪易社區(qū)-CSDN社區(qū)云 ? 本博文主要介紹vtk中基于Camera的交互方式vtkInteractorStyleTrackballCamera?及其子類,小伙伴可以根據(jù)需求自定義交互方式。 感謝各位小伙伴的點(diǎn)贊+關(guān)注,小易會繼續(xù)努力分享,一起進(jìn)步! 你的點(diǎn)贊就是我

    2024年02月05日
    瀏覽(35)
  • QT學(xué)習(xí)記錄(三)通過ui和代碼的方式往窗口添加組件

    QT學(xué)習(xí)記錄(三)通過ui和代碼的方式往窗口添加組件

    本文是b站教程的https://www.bilibili.com/video/BV1g4411H78N?p=5vd_source=a3efe214b8a2ba185e92e79cb6d6321b的筆記,外加自己的一些其他想法。如有侵權(quán)請聯(lián)系。如有錯(cuò)誤請指正。 通過拖拽,把一個(gè)按鈕和一個(gè)label拖進(jìn)去了。 新建了一個(gè)按鈕對象,并通過setParent指定了父親就是當(dāng)前的主窗口。 當(dāng)

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包