C 將Qt介面顯示到VTK三維環境中

2021-09-29 06:47:48 字數 1118 閱讀 3361

專案的需求是在三維環境下實現ui,最終實現的效果如下:

左邊是我的qt視窗在介面設計器中的預覽,右邊是vtk三維環境下介面的顯示。

(為了體現三維環境,我在右下角加了乙個圓柱)

讀到這裡,首先你應該具備以下能力才能進行之後的步驟:

1.能將vtk和qt編譯到同乙個目錄下;

2.熟悉qt和vtk的基本語法,設計思想。

關於這個需求,嘗試了很多方法,但大部分都失敗了。

本專案中使用到的這種方法,不保證是最優的,但確定是可行的。

方法的思路如下:

1.將qt的介面轉換為,儲存在計算機記憶體中

2.將轉為紋理,顯示到vtk的平面上

因為涉及到多個檔案,不方便放完整**,我這裡就直接說步驟和使用到的函式。

1.首先需要在qt介面上創乙個qwidget,將要顯示的部分放到該qwidget中;

2.使用qt的qpixmap庫中的grabwidget函式,將介面對映為乙個qpixmap;

3.使用qpixmap庫函式toimage將轉化為qimage格式;

注:2,3部分**如下

qpixmap::grabwidget(ui->mainwidget).toimage();
4.vtk中建立vtkqimagetoimagesource物件,輸入qimage;

5.建立vtktexture紋理圖,將存為紋理;

注:4,5部分**如下

vtknewimgturn;

imgturn->setqimage(&img);

vtknewtexture;

texture->setinputconnection(imgturn->getoutputport());

6.最後,建立乙個vtkplanesource,並將紋理顯示到平面上。

目前僅僅實現了介面的顯示,互動部分正在嘗試。

如果實現了互動,我將繼續更新此部落格。

Qt學習 Qt介面顯示中文亂碼

設定為系統字型,用三個set qtextcodec setcodecfortr qtextcodec setcodecforcstrings qtextcodec setcodecforlocale qt快速入門 一書中的方法,只需要乙個set qtextcodec setcodecfortr 但是...

將ogre 嵌入到 Qt中

我用的環境是vs2008 qt 2,新增幾個檔案如下 fogrewidget.h include 如果為假就返回 ifndef false return define false return h,r if h return r endif ifndef degug define degug end...

dataGridView將資料顯示到textBox

在windows下面.microsoft改造了ado成ado.net.大力改的控制項當然是recordset,在ado年代那個時候的資料庫操作全是連線式的操作,到了web年代microsoft把ado的recordset斷開,成為ado.net下面的dataset和.dataadapter,這樣一下...