QML配合VTK基本实现

采用 QT5.15  VTK9.2.0

建立QT QUICK项目

部分方法来源于 QML加载VTK

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>#include <QQuickVTKRenderWindow.h>
#include <QQuickVTKRenderItem.h>
#include <vtkPolyDataMapper.h>
#include <vtkCylinderSource.h>
#include <vtkCubeSource.h>int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif//定义app之前调用一次, 官方文档上写的 QQuickVTKRenderWindow::setupGraphicsBackend();QGuiApplication app(argc, argv);QQmlApplicationEngine engine;qmlRegisterType<QQuickVTKRenderWindow>("VTK", 9, 2, "VTKRenderWindow");qmlRegisterType<QQuickVTKRenderItem>("VTK", 9, 2, "VTKRenderItem");const QUrl url(QStringLiteral("qrc:/main.qml"));QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,&app, [url](QObject *obj, const QUrl &objUrl) {if (!obj && url == objUrl)QCoreApplication::exit(-1);}, Qt::QueuedConnection);engine.load(url);//------------------------------------//建立一个圆柱体vtkNew<vtkCylinderSource> cylinder;cylinder->SetResolution(8);vtkNew<vtkPolyDataMapper> cylinderMapper;cylinderMapper->SetInputConnection(cylinder->GetOutputPort());vtkSmartPointer<vtkActor> cylinderActor=vtkSmartPointer<vtkActor>::New();cylinderActor->SetMapper(cylinderMapper); cylinderActor->RotateX(30.0);cylinderActor->RotateY(-45.0);auto qquickvtkItem = engine.rootObjects().first()->findChild< QQuickVTKRenderItem* >( "ConeView" );auto main_render_3d = qquickvtkItem->renderer();main_render_3d->AddActor(cylinderActor);main_render_3d->ResetCamera();QQuickVTKRenderWindow* ren_win_3d = engine.rootObjects().first()->findChild< QQuickVTKRenderWindow* >( "renderWindow" );ren_win_3d->render();return app.exec();
}

main.qml

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.5import VTK 9.2Window {width: 640height: 480visible: truetitle: qsTr("Hello World")onWidthChanged: { console.log(width) }//---------------------------------------//---------------------------------------VTKRenderWindow{id: vtkwindowz: 10//注意这个objectName, 等会要用到!!!!! x1objectName: "renderWindow"width: parent.width * 0.9height: widthanchors.centerIn: parent}VTKRenderItem{id: coneViewItemz: 10//注意这个objectName, 等会要用到!!!!! x2objectName: "ConeView"anchors.fill: vtkwindowrenderWindow: vtkwindowfocus: true}}

pro文件

QT += quick# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cppRESOURCES += qml.qrc# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target##VTK
INCLUDEPATH+=$$quote(D:/WORKSPACE/VTK/VTK920/runtime/include/vtk-9.2)CONFIG(debug,debug|release){LIBS+=$$quote(D:/WORKSPACE/VTK/VTK920/runtime/lib/*.lib)
}else{LIBS+=$$quote(D:/WORKSPACE/VTK/VTK920/runtime/lib/*.lib)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688436.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后缀树与后缀数组简介及代码模板 ← AcWing 2715

【题目来源】https://www.acwing.com/problem/content/2717/【题目描述】 给定一个长度为 n 的字符串&#xff0c;只包含大小写英文字母和数字。 将字符串中的 n 个字符的位置编号按顺序设为 1∼n。 并将该字符串的 n 个非空后缀用其起始字符在字符串中的位置编号表示。 现在要…

挖了谷歌一个 XSS 漏洞,获奖三千美金

大家好&#xff0c;我是楷鹏。 程序员 Matan 挖到了一个 XSS 漏洞并报告给谷歌&#xff0c;奖励 3133.7 美金&#xff08;约合人民币 22666 元&#xff09; 这是谷歌 Bug Hunter 的奖励规则&#xff1a; &#x1f449; 图片来自 https://bughunters.google.com/about/rules/…

源代码防泄密的重要性

​源代码”作为互联网企业的核心资产之一&#xff0c;其安全性至关重要。源代码泄露不仅可能导致企业丧失技术优势&#xff0c;还可能引发知识产权纠纷、增加竞争对手的市场竞争力&#xff0c;甚至可能被用于恶意目的&#xff0c;如开发恶意软件等。因此&#xff0c;保护源代码…

十天学会单片机可能吗?单片机入门需要多久?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 十天学“会”单片机&#xf…

启用dell服务器的iDRAC

插网线 观察到 dell服务器背板左侧有一个网口&#xff0c;标有iDRAC字样&#xff0c;使用网线将该网口和网段所在的交换机连接起来。 网络配置 重启计算机&#xff0c;依照屏幕显示按F2进入SystemSetup。选择iDRACsettings – Network&#xff0c;需要改动的如下&#xff08;现…

微信小程序按钮去除边框线

通常我们去掉按钮边框直接设置 border:0 但是在小程序中无效&#xff0c;设置outline:none也没用&#xff0c;当然可能你会说加权重无效 实际上该样式是在伪元素::after内&#xff0c;主要你检查css 还看不到有这个关系&#xff0c;鹅厂就是坑多 类样式::after {border: non…

半小时搞懂STM32面经知识点——系统架构与启动流程

1.Cortex-M系统 1.1系统结构 1.处理器核心&#xff1a; Cortex-M3 2.存储器系统&#xff1a; Flash&#xff0c;SRAM&#xff0c;FSMC等 3.总线接口&#xff1a; 核心通过总线接口与外设设备和存储器进行通信。 总线矩阵&#xff1a;总线矩阵是一种硬件结构&#xff0c;用于连…

kali安装及替换源

一、安装及简单配置 1.安装&#xff1a;地址就不贴了&#xff0c;自己打一下就好 2.虚拟机中打开kali 3.替换包源 (1)使用指令打开/etc/apt/sources.list mousepad /etc/apt/sources.list (2)将内容替换成阿里云源 deb http://mirrors.aliyun.com/kali kali-rolling main n…

如何让组织充满活力?你需要做好这七步

组织活力&#xff0c;通俗点说就是&#xff1a; 从竞争对手角度看&#xff0c;组织活力强的组织能做到竞争对手做不到的事情&#xff1b; 从客户角度看&#xff0c;组织活力强的组织&#xff0c;客户感受好&#xff1b; 从员工角度看&#xff0c;组织活力强的组织&#xff0c…

干货分享:AI知识库-从认识到搭建

随着知识库的出现&#xff0c;人工智能也逐渐加入进来&#xff0c;形成了“AI知识库”。也许将AI和知识库拆开&#xff0c;你能理解是什么意思&#xff0c;但是当两个词结合在一起时&#xff0c;你又真的能理解它是做什么的吗&#xff1f;这就是今天我们要来聊的话题&#xff0…

企业微信hook接口协议,ipad协议http,新增联系人移除联系人到聊天标签

新增联系人移除联系人到聊天标签 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"2b0863724106a1160212bd1ccf025295","tagids":[10133101616638504 //标签id数组可以打多个空数组…

Vue3的CRUD模版(附Demo)

目录 前言模版 前言 用惯Vue2之后&#xff0c;在碰Vue3后&#xff0c;整体还是有所区别 此文主要做一个回顾总结 假设界面如下&#xff1a; 可CRUD&#xff0c;对应的新增 添加一些必选项&#xff1a; 其中数据库的设计如下&#xff1a; 模版 对应需要注意参数位置、初始…