Ubuntu Qt VTK 開發環境配置
Ubuntu Qt VTK 開發環境配置
1 安裝依賴庫
sudo apt update sudo apt install -y build-essential cmake sudo apt install -y qtbase5-dev qtchooser qt5-qmake qtcreator sudo apt install -y libvtk9-dev libvtk9-qt-dev # VTK 9 的 Qt 支持
2 創建 Qt 項目并配置 VTK
CMake 項目(推薦)
cmake_minimum_required(VERSION 3.16)
project(vtkShow LANGUAGES C CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
find_package(VTK REQUIRED)
set(VTK_USE_QT ON)
set(VTK_NO_MPI ON)
add_executable(vtkShow
main.cpp
)
target_link_libraries(vtkShow Qt${QT_VERSION_MAJOR}::Core ${VTK_LIBRARIES})
include(GNUInstallDirs)
install(TARGETS vtkShow
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
main.cpp
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
int main()
{
vtkSmartPointer<vtkCylinderSource> cylinder =nullptr;
cylinder = vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight(3.0);
cylinder->SetRadius(1.0);
cylinder->SetResolution(200);
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper=nullptr;
cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
vtkSmartPointer<vtkActor> cylinderActor = nullptr;
cylinderActor= vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(0.0,0.0,1.0);
vtkSmartPointer<vtkRenderer> renderer = nullptr;
renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor);
renderer->SetBackground(1.0,1.0,1.0);
vtkSmartPointer<vtkRenderWindow> window = nullptr;
window =vtkSmartPointer<vtkRenderWindow>::New();
window->AddRenderer(renderer);
window->SetSize(600,480);
window->Render();
window->SetWindowName("Cylinder");
vtkSmartPointer<vtkRenderWindowInteractor> interactor = nullptr;
interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
interactor->SetRenderWindow(window);
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = nullptr;
style=vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
interactor->SetInteractorStyle(style);
interactor->Initialize();
interactor->Start();
return EXIT_SUCCESS;
}
編譯運行
mkdir build && cd build cmake .. && make ./vtkShow
浙公網安備 33010602011771號