#include "QT_Demo.h"
QString path = "C:\\Users\\C230524\\Desktop\\QT_Demo\\x64\\Debug\\engine.ply";
QT_Demo::QT_Demo(QWidget* parent): QMainWindow(parent)
{
//窗体初始化
ui.setupUi(this);
connect(ui.pushButton, &QPushButton::pressed, this, &QT_Demo::push_Clicked);
//connect(ui.pushButton, SIGNAL(triggered()), this, SLOT(push_Clicked()));
}
QT_Demo::~QT_Demo()
{
}
void QT_Demo::push_Clicked()
{
//读取模型
vtkSmartPointer<vtkPLYReader> read = vtkSmartPointer<vtkPLYReader>::New();
read->SetFileName(path.toUtf8());
read->Update();
//建立管线
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputData(read->GetOutput());
cylinderMapper->Update();
//Actor
vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
//场景
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor);
renderer->SetBackground(0.1, 0.2, 0.4);
//场景交互
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
//VTK事件触发QT槽
vtkSmartPointer<vtkEventQtSlotConnect> slot = vtkSmartPointer<vtkEventQtSlotConnect>::New();
slot->Connect(interactor, vtkCommand::MouseMoveEvent, this, SLOT(onMouse(vtkObject*)));
//交互方式
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
interactor->SetInteractorStyle(style);
//渲染
ui.VtkWindow->renderWindow()->AddRenderer(renderer);
ui.VtkWindow->renderWindow()->SetInteractor(interactor);
ui.VtkWindow->renderWindow()->Render();
interactor->Initialize();
interactor->Start();
//清空
cylinderMapper->Delete();
cylinderActor->Delete();
renderer->Delete();
read->Delete();
slot->Delete();
}
void QT_Demo::onMouse(vtkObject* obj)
{
vtkRenderWindowInteractor* intactor = vtkRenderWindowInteractor::SafeDownCast(obj);
int event_points[2];
intactor->GetEventPosition(event_points);
QString str;
str.sprintf("X=%d:Y=%d", event_points[0], event_points[1]);
ui.statusBar->showMessage(str);
}
QT+VTK实现鼠标位置输出
最新推荐文章于 2024-04-30 15:52:37 发布