1 运行效果
项目基于QQuick+VTK演示VTK在QML中的集成

2 下载项目
下载链接:https://download.csdn.net/download/m0_46655373/92247524
3 代码分析
继承自 QQuickVtkItem 并覆盖 initializeVTK() 方法
class MyVtkItem : public QQuickVtkItem
{
public:
vtkUserData initializeVTK(vtkRenderWindow *renderWindow) override;
};
生成 vtkObject 数据
struct MyVtkData : vtkObject
{
static MyVtkData* New();
vtkTypeMacro(MyVtkData, vtkObject);
// Place all your persistant VTK objects here
};
设置场景、添加对象并返回数据
QQuickVtkItem::vtkUserData MyVtkItem::initializeVTK(vtkRenderWindow *renderWindow)
{
auto vtk = vtkNew<MyVtkData>();
vtkNew<vtkNamedColors> colors;
vtkNew<vtkRenderer> renderer;
renderWindow->SetSize(640, 480);
renderWindow->AddRenderer(renderer);
vtkNew<vtkSphereSource> source;
source->SetRadius(5.0);
source->SetCenter(1, 1, 1);
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(source->GetOutputPort());
vtkNew<vtkActor> actor;
actor->SetMapper(mapper)
actor->GetProperty()->SetColor(
colors->GetColor3d("White").GetData());
renderer->AddActor(actor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
return vtk;
}
将项目连接到 QML( main.cpp )
qmlRegisterType<MyVtkItem>("Vtk", 1, 0, "MyVtkItem");
将连接移植到 QML 文件
import Vtk 1.0 as Vtk
QML中创建显示窗口Item
Vtk.MyVtkItem {
anchors.fill: parent
anchors.margins: 10
opacity: 0.7
}

被折叠的 条评论
为什么被折叠?



