当前位置: 首页 > news >正文

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类    

//! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand;

2.设置框选的属性

mRectBand = new AIS_RubberBand();
//设置属性
mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线
mRectBand->SetLineColor(Quantity_NOC_RED);

3.在鼠标移动的事件中添加新的事件

void OccView::mouseMoveEvent(QMouseEvent* theEvent)
{if ((theEvent->buttons() & Qt::LeftButton) && (theEvent->buttons() & Qt::RightButton)){//鼠标左右按键一起按,执行平移myView->Pan(theEvent->pos().x() - myXmax, myYmax - theEvent->pos().y());//沿视图投影的x和y轴平移视图中心,可用于交互式平移操作myXmax = theEvent->x();myYmax = theEvent->y();}else if (theEvent->buttons() & Qt::MiddleButton){//鼠标滚轮按键if (qApp->keyboardModifiers() == Qt::ShiftModifier) //且按下shift按键{//鼠标滚轮按键执行平移myView->Pan(theEvent->pos().x() - myXmax, myYmax - theEvent->pos().y());myXmax = theEvent->x();myYmax = theEvent->y();}else{myView->Rotation(theEvent->x(), theEvent->y());}}else if (theEvent->buttons() & Qt::LeftButton){//绘制选择框//获得视口尺寸int winViewWidth = 0;int winViewHeight = 0;myView->Window()->Size(winViewWidth, winViewHeight);//设置矩形边界mRectBand->SetRectangle(myXmax, winViewHeight - myYmax, theEvent->pos().x(), winViewHeight - theEvent->pos().y());//更新显示if (myContext->IsDisplayed(mRectBand)){myContext->Redisplay(mRectBand, true);}else{myContext->Display(mRectBand, true);}myContext->SelectRectangle(Graphic3d_Vec2i(myXmax, myYmax), Graphic3d_Vec2i(theEvent->pos().x(), theEvent->pos().y()), myView);}else{//将鼠标位置传递到交互环境myContext->MoveTo(theEvent->pos().x(), theEvent->pos().y(), myView, Standard_Boolean(true));}
}

4.在鼠标释放事件中清空框选

void OccView::mouseReleaseEvent(QMouseEvent* theEvent)
{std::cout << myContext->IsDisplayed(mRectBand) << std::endl;if (myContext->IsDisplayed(mRectBand)){myContext->Remove(mRectBand, Standard_True);myView->Update();}//将鼠标位置传递到交互环境myContext->MoveTo(theEvent->pos().x(), theEvent->pos().y(), myView, Standard_Boolean(true));
}

效果图:

相关文章:

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…...

docker 部署 postgres

这里以postgres:12.6为例&#xff1a; 1. 拉取postgres镜像 docker pull postgres:12.62. 创建挂载目录 mkdir -p /mydata/docker/postgres-1/data3. 启动postgres容器 docker run --name postgres-12.6 \-e POSTGRES_PASSWORD123456 \-p 5432:5432 \-v /mydata/docker/pos…...

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中&#xff0c;添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…...

硬货!Zabbix监控AIX系统服务案例

本文将介绍如何使用Zabbix自定义键值脚本方式监控AIX 系统IBM CICS中间件进程服务以及日志文件等信息。 Customer Information Control System (CICS) Transaction Server 是 IBM 针对 z/OS 的多用途事务处理软件。这是一个功能强大的应用程序服务器&#xff0c;用于大型和小型…...

python常见面试题

1、什么是Python&#xff1f;为什么它会如此流行&#xff1f; Python是一种解释的、高级的、通用的编程语言。 Python的设计理念是通过使用必要的空格与空行&#xff0c;增强代码的可读性。 它之所以受欢迎&#xff0c;就是因为它具有简单易用的语法。 ▍2、为什么Python执…...

低功耗接地故障控制器D4145

一、概述 D4145 是一个接地故障断路器。它能够检测到不良的接地条件&#xff0c;譬如装置接触到水时&#xff0c;它会在有害或致命的电击发生之前将电路断开。 D4145能检测并保护从火线到地线,从零线到地线的故障.这种简单而传统的电路设计能够确保其应用自如和长时间的可靠性。…...

SpringMVC的处理流程

深入理解 SpringMVC 的请求处理流程&#xff1a;从用户请求到视图渲染的八个步骤 SpringMVC 是当前流行的基于 Java 的 Web 框架之一&#xff0c;它通过前端控制器 DispatcherServlet 将用户的 HTTP 请求统一接收并处理&#xff0c;随后将请求分发到具体的处理器&#xff08;通…...

SpringBoot统一日志框架

在项目开发中&#xff0c;日志十分的重要&#xff0c;不管是记录运行情况还是定位线上问题&#xff0c;都离不开对日志的分析。 1.日志框架的选择 市面上常见的日志框架有很多&#xff0c;它们可以被分为两类&#xff1a;日志门面&#xff08;日志抽象层&#xff09;和日志实…...

vue-live2d看板娘集成方案设计使用教程

文章目录 前言v1.1.x版本&#xff1a;vue集成看板娘&#xff08;暂不使用&#xff0c;在v1.2.x已替换&#xff09;集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研&#xff1a;2024.10.2开源方案1&#xff1a;OhMyLive2D&#xff08;推荐&#xff09;开源方案2&…...

springboot接口如何支持400并发量

Spring Boot 本身并不直接限制并发量&#xff0c;但是你可以通过配置来优化应用以处理更多的并发请求。以下是一些关键配置和优化技巧&#xff1a; 服务器连接配置&#xff08;application.properties 或 application.yml&#xff09;: # 服务器连接数配置 server.tomcat.max…...

Verilog中的: `+:` 和 `-:`

: 和 -: 标准解释 logic [15:0] down_vect; logic [0:15] up_vect;down_vect[lsb_base_expr : width_expr] up_vect [msb_base_expr : width_expr] down_vect[msb_base_expr -: width_expr] up_vect [lsb_base_expr -: width_expr]举例 reg [31:0] dword; reg [7:0] byte0…...

为何四次挥手要等待2MSL

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/204988465 A主动关闭连接一方&#xff0c;B是被动关闭一方 我们假设A发送了ACK报文后过了一段时间t之后B才收到该ACK&#xff0c;则有 0 < t < MSL。因为A并不知道它发送出去的ACK要多久对方才能收到&#xff0c;所以…...

C++——模拟实现list

1.初步实现结点和链表 namespace jxy {template<class T>struct list_node{T _data;list_node<T>* _prev;list_node<T>* _next;list_node(const T& x T()):_data(x),_prev(nullptr),_next(nullptr){}};template<class T>class list//list的框架本…...

React中useState、useReducer与useRef

useState 详解 useState 是 React 函数组件中用于管理组件状态的 Hook。它提供了一种简洁的方式来在函数组件中添加状态&#xff0c;并在状态改变时触发组件重新渲染。以下是 useState 的详细解析&#xff1a; 一、基本概念 useState 是一个函数&#xff0c;它接收一个初始状…...

ReGCL Rethinking Message Passingin Graph Contrastive Learning

AAAI24 推荐指数&#xff1a; #paper/⭐ 总体说&#xff1a;利用梯度对对比正负样本加权的。个人觉得和与正负样本加权没有区别&#xff0c;读完之后不想做笔记了。...

ubutun安装ffmpeg

安装依赖 sudo apt-get install yasm sudo apt-get install libsdl1.2-dev sudo apt-get install libsdl2-dev 下载安装 tar -zxvf filename.gz ./configure --enable-shared --prefix/usr/local/ffmpeg make -j4 sudo make install 添加路径 路径/usr/local/ffmpeg…...

Vue的基本用法及模板语法

Vue.js使用了基于 HTML 的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue实例的数据。所有 Vue.js的模板都是合法的 HTML&#xff0c;所以能被遵循规范的浏览器和 HTML 解析器解析。 在底层的实现上&#xff0c;Vue将模板编译成虚拟 DOM 渲染函数。结合响应系…...

Redis数据库与GO完结篇:redis操作总结与GO使用redis

一、redis操作总结 由于写redis命令的时候有提示符&#xff0c;所以下表只给出命令名称 数据类型操作简介字符串GET, SET, MGET, MSET, SETEX,DEL最基本的数据类型&#xff0c;存储任意二进制数据&#xff0c;支持简单操作和原子计数。适合存储重复数据。哈希HSET, HGET, HDE…...

《重生到现代之从零开始的C语言生活》—— 动态内存管理

动态内存分配 我们在开辟内存的时候就是 int a 3;这样 但是这样开的空间大小是固定的&#xff0c;且大小不能调整 但是如果我们用动态内存开辟的话&#xff0c;就可以自己申请和释放空间、 malloc 是C语言提供的一个开辟动态空间的函数 void* malloc (size_t size);//si…...

四、Spring Boot集成Spring Security之登录登出业务逻辑

Spring Boot集成Spring Security之登录登出业务逻辑 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务…...

【CTF】【Misc 文件类型】工具与流程

工具准备 本人为方便 CTF 部分 Misc 类型的解题&#xff0c;制作如下集成软件。本软件集成常用功能&#xff0c;能一站式解决大多数 Misc 文件类问题&#xff0c;省去切换工具的繁琐流程&#xff0c;大大提高解题效率&#xff0c;且界面简洁易用。且预留了拓展接口&#xff0c;…...

【2026年拼多多暑期实习/春招- 5月17日-第四题- 多多的道路修建Ⅱ】(题目+思路+JavaC++Python解析+在线测试)

题目内容 多多现在在负责多多乡村的修建。 道路修建问题可以看作是在一条直线上,有NNN个单位。 经过认真分析,他发现每一段路有两种修建的方案,分别为“修111”和“修22...

ArduPilot硬件抽象层(HAL)详解:如何让你的代码跑在不同的飞控板上(以STM32为例)

ArduPilot硬件抽象层深度解析&#xff1a;从STM32到多平台移植实战指南 引言&#xff1a;为什么HAL是飞控开发的核心枢纽 在无人机飞控开发领域&#xff0c;硬件平台的多样性一直是开发者面临的首要挑战。不同厂商的MCU架构、外设接口和操作系统差异&#xff0c;往往导致代码…...

Leantime:为神经多样性团队设计的现代项目管理解决方案

Leantime&#xff1a;为神经多样性团队设计的现代项目管理解决方案 【免费下载链接】leantime Leantime is a goals focused project management system for non-project managers. Building with ADHD, Autism, and dyslexia in mind. 项目地址: https://gitcode.com/GitHub…...

Bandgap设计避坑指南:从Cadence仿真看运放稳定性与启动电路的那些事儿

Bandgap设计避坑指南&#xff1a;从Cadence仿真看运放稳定性与启动电路的那些事儿 在模拟IC设计的江湖里&#xff0c;Bandgap电路就像一位深藏不露的内功大师——表面简单&#xff0c;实则暗藏玄机。许多工程师在完成主电路设计后&#xff0c;常常会遇到两个"幽灵问题&quo…...

别再只盯着NXP和Impinj了!盘点5款国产超高频RFID芯片的‘独门绝技’

国产超高频RFID芯片的五大技术突围路径 在供应链安全与核心技术自主可控的背景下&#xff0c;国产超高频RFID芯片正从"能用"向"好用"快速演进。不同于早期简单模仿进口芯片的方案&#xff0c;如今头部厂商已形成独特的技术路线——有的在抗金属性能上实现突…...

codex出现Reconnecting和stream disconnected before completion:stream closed before response.complete解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

直播抠图技术100谈之25---调色中曲线是最优解

为什么曲线调色是最优解 蓝松抠图在即将发布的版本中特意重写了曲线调节&#xff0c;把达芬奇的二级曲线重新做了一遍&#xff0c;并模仿达芬奇的节点图做了自己的节点图。我们为什么要重新设计曲线&#xff0c;因为我们认为调色中曲线是最优解&#xff1b; 结论 在所有调色手段…...

Space Thumbnails:Windows资源管理器的终极3D模型预览解决方案

Space Thumbnails&#xff1a;Windows资源管理器的终极3D模型预览解决方案 【免费下载链接】space-thumbnails Generates preview thumbnails for 3D model files. Provide a Windows Explorer extensions that adds preview thumbnails for 3D model files. 项目地址: https…...

如何免费解锁Cursor AI Pro功能:终极三步激活指南

如何免费解锁Cursor AI Pro功能&#xff1a;终极三步激活指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial r…...