1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#include <QtQml/QQmlApplicationEngine>
#include <QtQuick/QQuickWindow>
#include <QtGui/QGuiApplication>
#include <QtGui/QSurfaceFormat>
#include <QQuickVTKItem.h>
#include <QVTKRenderWindowAdapter.h>
#include <vtkActor.h>
#include <vtkConeSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
struct MyVtkItem : QQuickVTKItem
{
vtkUserData initializeVTK(vtkRenderWindow* renderWindow) override
{
// Create a cone pipeline and add it to the view
vtkNew<vtkConeSource> cone;
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(cone->GetOutputPort());
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
vtkNew<vtkRenderer> renderer;
renderer->AddActor(actor);
renderer->ResetCamera();
renderer->SetBackground(0.0, 1.0, 1.0);
renderer->SetBackground2(1.0, 0.0, 0.0);
renderer->SetGradientBackground(true);
renderWindow->AddRenderer(renderer);
renderWindow->SetMultiSamples(16);
return nullptr;
}
};
int main(int argc, char* argv[])
{
QQuickVTKItem::setGraphicsApi();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
qmlRegisterType<MyVtkItem>("com.vtk.example", 1, 0, "MyVtkItem");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
|