지식은 혼자가 아니라 체계적이어야 합니다. 더 많은 개인 요약 및 관련 경험은 Visual Studio 칼럼에서 찾을 수 있습니다 .
이 예제에 대한 자세한 내용은 다음을 참조하십시오. 【Visual Studio】Visual Studio 및 Qt를 사용하여 Windows에서 VTK 빌드 .
Qt를 사용하여 작은 공을 표시하는 예제를 완료한 후 VTK 공식 웹 사이트에서 예제를 다운로드한 다음 내 자신의 Qt 프로젝트로 포팅을 시도했습니다.관심 있는 경우 다음을 볼 수 있습니다 .
기사 디렉토리
버전 환경
버전 환경은 다음과 같습니다.
- win11
- 비주얼 스튜디오 2022
- VTK-9.2.6
- C메이크 3.26.3
- Qt 6.2.8
VTKTest.ui
VTKTest.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_VTKTest.h"
#include <qsurfaceformat.h>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
#include "vtkAutoInit.h"
class VTKTest : public QMainWindow
{
Q_OBJECT
public:
VTKTest(QWidget* parent = nullptr);
//VTKTest(QWidget* parent = Q_NULLPTR);
~VTKTest();
private slots:
void on_pushButton_clicked();
private:
Ui::VTKTestClass ui;
};
VTKTest.cpp
#include "VTKTest.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTKTest::VTKTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
VTKTest::~VTKTest()
{
}
void VTKTest::on_pushButton_clicked()
{
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
//QVTKOpenGLNativeWidget* widget = new QVTKOpenGLNativeWidget();
vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();
vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper> sphereMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkSmartPointer<vtkActor> sphereActor = vtkSmartPointer<vtkActor>::New();
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
ui.qvtkWidget->setRenderWindow(renderWindow);
ui.qvtkWidget->resize(200, 160);
ui.qvtkWidget->show();
}
main.cpp
#include "VTKTest.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
VTKTest w;
w.show();
return a.exec();
}