2、VDK 使用QVTKOpenGLNativeWidget嵌入到QT窗体中

MainWindow.h

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QVTKOpenGLNativeWidget.h>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QVTKOpenGLNativeWidget *m_vtkWd = nullptr;

    void InitVDK();
};
#endif // MAINWINDOW_H

MainWindow.cpp

cpp 复制代码
#include "MainWindow.h"
#include "./ui_MainWindow.h"
#include <QVBoxLayout>
#include <vtkConeSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    InitVDK();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::InitVDK()
{
    m_vtkWd = new QVTKOpenGLNativeWidget(this);

    auto ly = new QVBoxLayout();
    ui->centralwidget->setLayout(ly);
    ly->addWidget(m_vtkWd);

    auto cone = vtkSmartPointer<vtkConeSource>::New();
    cone->SetRadius(1);
    cone->SetHeight(3);
    cone->SetResolution(100);

    auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(cone->GetOutputPort());

    auto actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);
    actor->GetProperty()->SetColor(0, 1, 0);
    actor->GetProperty()->SetRepresentationToWireframe();


    auto mapper2 = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper2->SetInputConnection(cone->GetOutputPort());

    auto actor2 = vtkSmartPointer<vtkActor>::New();
    actor2->SetMapper(mapper2);
    actor2->GetProperty()->SetColor(1, 0, 0);
    actor2->GetProperty()->SetOpacity(0.5);

    auto render = vtkSmartPointer<vtkRenderer>::New();
    render->AddActor(actor);
    render->AddActor(actor2);

    m_vtkWd->renderWindow()->AddRenderer(render);
}
相关推荐
Quz8 小时前
QML Repeater 数据模型:ListModel 与 C++ QAbstractListModel
qt
Quz8 小时前
QML Repeater 基础用法:整数、JS 数组、字符串数组三种模型
qt
江湖人称菠萝包15 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter3-Qt类库概述
笔记·qt·qt5
qq_3449205615 小时前
Qt事件过滤器
开发语言·c++·qt
sunriver200016 小时前
【Qt】由于找不到 Qt6Core5Compatd.dll
qt·qt6core5compatd
qq_3449205616 小时前
Qt 鼠标双击QLabel全屏显示图像
c++·qt
江湖人称菠萝包19 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter4-常用界面设计组件
笔记·qt·qt5
实心儿儿19 小时前
Qt — QtCreator 创建项目
qt
Quz1 天前
QML 常见的四种导航布局
qt
江湖人称菠萝包1 天前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter2-GUI应用程序设计基础
笔记·qt·qt5