#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>#include <vtkNew.h> // 智能指针
#include <QVTKOpenGLNativeWidget.h>
#include <vtkCylinderSource.h> // 圆柱#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkProperty.h>
#include <vtkCamera.h>
#include <vtkGenericOpenGLRenderWindow.h>#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();vtkNew<vtkCylinderSource> cylinder; // 圆柱vtkNew<vtkPolyDataMapper> mapper;vtkNew<vtkActor> actor;vtkNew<vtkRenderer> renderer;vtkNew<vtkGenericOpenGLRenderWindow> renWin;private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include “mainwindow.h”
#include “./ui_mainwindow.h”
- MainWindow::MainWindow(QWidget *parent)
- QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->openGLWidget->setStyleSheet(“background:transparent;border:3px solid black;”);
cylinder->SetResolution(10);mapper->SetInputConnection(cylinder->GetOutputPort());actor->SetMapper(mapper);
actor->GetProperty()->SetColor(0.0000, 0.3883, 0.2784);
actor->RotateX(30.0);
actor->RotateY(-45.0);renderer->AddActor(actor);
renderer->ResetCamera();
renderer->GetActiveCamera()->Zoom(1.5);
renderer->SetBackground(0.1, 0.3, 0.7);
renWin->AddRenderer(renderer);
renWin->SetSize(640, 640);ui->openGLWidget->setRenderWindow(renWin);
}
MainWindow::~MainWindow()
{
delete ui;
}
`
``