Qt扩展-QCustomPlot 用户交互

QCustomPlot 用户交互

  • 一、概述
  • 二、操作范围
  • 三、选择机制
    • 1. 控制Graph的可选择性和选择状态
    • 2. 所选对象的外观
    • 3. 多部分对象
    • 4. 对选择变化做出反应
  • 四、用户交互信号

一、概述

QCustomPlot提供了多个内置的用户交互。它们大致可以分为

  • 通过用鼠标拖动和滚动鼠标滚轮进行范围操作
  • 通过点击选择绘图实体
  • 用户点击绘图实体时发出的信号

二、操作范围

这个其实就是开启鼠标上下左右平移或者缩放Graph的功能

用户操作轴范围的默认方法是在相应的QCPAxisRect上执行拖动操作。
在这里插入图片描述

要在QCustomPlot控件中启用范围拖动,需要将标志 QCP::iRangeDrag 添加到当前允许的交互中。这可以通过 customPlot->setInteraction(QCP::iRangeDrag, true) 来完成。要只允许在一个方向上拖动,请使用 QCPAxisRect::setRangeDrag 并指定Qt::Vertical或Qt::Horizontal。默认列表允许两个方向Qt::Vertical | Qt::Horizontal。

在拖动操作期间,通过QCPAxisRect::setRangeDragAxes配置的轴会实时更新其范围,自动导致重绘。这给用户的印象是通过用鼠标抓取来移动绘图坐标平面。最初,将范围拖动轴配置为矩形的底部和左侧轴。对于QCustomPlot控件的默认轴矩形,它们是QCustomPlot::xAxis和QCustomPlot::yAxis。

要改变范围的大小,即放大或缩小绘图,用户可以使用鼠标滚轮。此行为由交互标志QCP::iRangeZoom 控制,该标志也需要通过 QCustomPlot::setInteraction 激活。就像范围拖动一样,缩放也可以根据受影响的轴和方向进行选择,参见函数QCPAxisRect::setRangeZoomAxes和QCPAxisRect::setRangeZoom

。此外,缩放强度可以通过QCPAxisRect::setRangeZoomFactor来控制。在普通鼠标硬件上,一个鼠标滚轮步对应于应用于轴范围的这个因子。如果因子大于1,则向前滚动鼠标滚轮会减小范围(放大),向后滚动则会增大范围(缩小)。若要扭转此行为,请将鼠标滚轮缩放因子设置为小于1(但大于零)。缩放总是以绘图中当前鼠标光标的位置为中心。

这意味着将光标指向感兴趣的功能并滚动鼠标滚轮可以放大该功能。

三、选择机制

在这里插入图片描述

QCustomPlot提供了一种选择机制,允许用户选择图中的每个组件,如轴和图形。可以使用以 QCP::iSelect(…) 开头的交互标志来控制某类实体在图中是否通常可选择。例如,设置customPlot->setInteraction(QCP::iSelectPlottables, true)将允许用户通过点击它们来选择绘图(例如图形)。请查看所有交互标志的QCP::Interaction文档。

要允许同时选择多个对象,可以设置 QCP::iMultiSelect交互 标志。然后,用户可以通过按住多选择修饰符(参见QCustomPlot::setMultiSelectModifier)连续选择多个对象,默认情况下是Ctrl。

1. 控制Graph的可选择性和选择状态

可以使用单个对象上的setSelectable函数进一步微调可选择性。例如,如果绘图中的特定图形不能被用户选择,调用thatGraph->setSelectable(false)。可以通过setSelected函数以编程方式修改所选状态。即使禁用了用户的可选择性,也可以通过编程方式更改选择状态。

要取消选中图中的所有对象,请调用QCustomPlot::deselectAll。

2. 所选对象的外观

被选中的对象通常用不同的笔、笔刷或字体显示。其实就是让选择的对象更加突出的显示出来。这可以通过QCPGraph::setSelectedPen, QCPGraph::setSelectedBrush, QCPAxis::setSelectedLabelFont, QCPAxis::setSelectedBasePen, QCPItemText::setSelectedColor等方法进行配置,仅举几例。可以看到,它们的命名与原始(非选中)属性相似,但带有“Selected”前缀。

3. 多部分对象

一些对象(如轴线和图例)具有更复杂的外观,因此用于选择的单个布尔值是不够的。在这些情况下,可选择性和选择状态都是SelectablePart标志的一个或组合(各自的QFlags类型称为SelectableParts)。每个多部件对象定义自己的SelectablePart类型。
在这里插入图片描述

例如,QCPAxis在概念上由三部分组成:带有打勾标记的轴骨干打勾标签(数字)轴标签。由于这三个部分应该是可单独选择的,所以qcpaaxis::SelectablePart定义了qcpaaxis::spNone、qcpaaxis::spAxis、qcpaaxis::spTickLabels和qcpaaxis::spAxisLabel。要使轴骨干和刻度标签可选,但不能使轴标签可选,请调用theAxis->setSelectableParts(qcpaaxis::spAxis|QCP::spTickLabels)。

要控制多部件对象的当前选择状态,请使用qcpaaxis::setSelectedParts方法。

4. 对选择变化做出反应

当选择发生变化时,每个对象都会发出一个名为selectionChanged的信号。无论更改是由用户引起的,还是由调用setSelected/setSelectedParts以编程方式引起的,都无关紧要。

如果绘图中的选择被用户交互改变,则会发出QCustomPlot范围的信号QCustomPlot::selectionChangedByUser。

在连接到该信号的槽函数中,我们可以检查某些对象的选择状态并做出相应的反应。在这里,QCustomPlot::selectedPlottables、selectedItems、selectedax和selectedLegends方法对于检索特定类型的选定对象可能很有用。

四、用户交互信号

QCustomPlot独立于选择机制,在用户交互时发出各种信号。最低级的是QCustomPlot::mouseDoubleClick、mousePress、mouseMove、mouserrelease和mouseWheel信号。当QCustomPlot控件的相应事件触发时,会发出它们。注意,最干净的方法是创建QCustomPlot的子类,并用相同的名称重新实现事件方法(从QWidget 继承)。但是,如果我们不想子类化QCustomPlot,这些信号允许更容易地访问简单任务的用户交互。

还有更高级的信号,用于报告图中某些对象的单击和双击:QCustomPlot::plottableClick、plottableDoubleClick、itemClick、itemDoubleClick、axisClick、axisDoubleClick、legendClick、legendDoubleClick、titleClick和titleDoubleClick。所有这些信号都会报告哪个对象被单击了(如果是多部分对象,还会报告哪个部分),以及相关的QMouseEvent。

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

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

相关文章

【单片机】12-串口通信和RS485

1.通信有关的常见概念 区分:串口,COM口,UART,USART_usart和串口区别-CSDN博客 串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客 1.什么是通信 (1)人和人之间的通信:说话&#xff…

在枚举类中“优雅地”使用枚举处理器

使用枚举类的一大好处就是,代码易懂,方便自己或他人维护。如,枚举状态、异常等。 下面有两个类(枚举类和实体类): package com.zhang.enums;import lombok.Getter;/*** Author lgz* Description* Date 202…

计算机网络之传输层

计算机网络 - 传输层 计算机网络 - 传输层 UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 可靠传输TCP 滑动窗口TCP 流量控制TCP 拥塞控制 1. 慢开始与拥塞避免2. 快重传与快恢复 网络层只把分组发送到目的主机,但是真正通信的并不是…

消息中间件(二)——kafka

文章目录 Apache Kafka综述什么是消息系统?点对点消息类型发布-订阅消息类型 什么是Kafka?优点关键术语Kafka基本原理用例 Apache Kafka综述 在大数据中,会使用到大量的数据。面对这些海量的数据,我们一是需要做到能够收集这些数据&#xf…

安全渗透测试基础之漏洞扫描工具之Nessus使用介绍

前置条件:Nessus工具使用前要确保工具是服务状态 systemctl start nessusd.service 启动nessus服务 systemctl status nessusd.service 查看nessus服务状态 1.配置扫描模板 2.新增高级扫描 2.1 设置日程表: 2.2设置邮件收件人(可选): 2.3主机发现: 2.

Egg 封装接口返回信息

中间件封装 代码 const msgArr {"200":成功,"401":token失效 } module.exports (option, app) > {return async function(ctx, next) {try{//成功是返回的信息ctx.emit(code,data,msg)>{console.log(1111,code,data,msg)ctx.body {code,data:dat…

递推+模拟---想好如何存储?

递推模拟 输入输出问题CCF-CSP考试历年真题题型分类分组输入——可能有多组测试数据,对于每组数据 递推---从前面已知态--->后续未知态AcWing 3777. 砖块AcWing 1208. 翻硬币AcWing 1211. 蚂蚁感冒AcWing 3433. 吃糖果AcWing 821. 跳台阶 模拟202212-2-csp-训练计…

点亮一个LED+LED闪烁+LED流水灯——“51单片机”

各位CSDN的uu们好呀,这是小雅兰的最新专栏噢,最近小雅兰学习了51单片机的知识,所以就想迫不及待地分享出来呢!!!下面,让我们进入51单片机的世界吧!!! 点亮一个…

NLP 02 RNN

一、RNN RNN(Recurrent Neural Network),中文称作循环神经网络它一般以序列数据为输入通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。 传统神经网络(包括CNN),输入和输出都是互相独立的。但有些任务,后续的输出和之前…

华为云云耀云服务器L实例评测 | MacOS系统-宝塔建站

文章目录 1.华为云云耀云服务器L实例2.选择配置与购买2.1 华为云云耀云服务器L实例-套餐配置详情 3.宝塔镜像的使用3.1 重置实例的密码3.2 MacOS环境登录服务器3.2.1 查看内存使用情况 3.3 进入宝塔面板3.3.1 在安全组开放端口3.3.2 网站效果 1.华为云云耀云服务器L实例 云耀云…

毛玻璃态登录表单

效果展示 页面结构组成 通过上述的效果展示可以看出如下几个效果 底部背景有三个色块并且效果是毛玻璃效果登录表单是毛玻璃效果登录表单的周围的小方块也是有毛玻璃效果并且与登录表单有层次效果 CSS3 知识点 filter 属性backdrop-filter 属性绝对定位属性动画属性 底部背…

案例突破——再探策略模式

再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化(配置文件反射) 四、总结五、升华 一、背景介绍 在做项目…

使用Qt验证RGB格式

下面我们用不同的颜色来绘制一块矩形区域,来对比学习RGB颜色。 一片漆黑的黑色 黑色在RGB中是三个颜色分量都是0。也就是没有颜色。 下面我们绘制一个水平100个像素,垂直200个像素的矩形区域,颜色设置为黑色。 #ifndef MAINWINDOW_H #def…

Lua如何调用C程序库

在Lua中加载和使用C库需要使用Lua的C API。以下是一个简单的示例&#xff1a; 首先&#xff0c;让我们创建一个C库。在C中&#xff0c;我们可以创建一个文件&#xff0c;如“mylib.c”&#xff0c;包含以下代码&#xff1a; #include <stdio.h> int add(int a, int b) …

Android Jetpack组件架构:ViewModel的原理

Android Jetpack组件架构&#xff1a;ViewModel的原理 导言 本篇文章是关于介绍ViewModel的&#xff0c;由于ViewModel的使用还是挺简单的&#xff0c;这里就不再介绍其的基本应用&#xff0c;我们主要来分析ViewModel的原理。 ViewModel的生命周期 众所周知&#xff0c;一般…

软件设计师_操作系统基本原理_学习笔记

文章目录 2.1 操作系统概述2.2 进程2.2.1 进程状态转换图2.2.2 前趋图2.2.3 进程的同步与互斥2.2.4 PV操作2.2.5 死锁 2.3 存储管理2.3.1 分区存储管理 2.1 操作系统概述 2.2 进程 2.2.1 进程状态转换图 2.2.2 前趋图 哪些任务可以并行&#xff0c;哪些任务有先后关系&#xf…

VS+Qt+C++ GDAL读取tif图像数据显示

程序示例精选 VSQtC GDAL读取tif图像数据显示 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《VSQtC GDAL读取tif图像数据显示》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;…

Egg使用jwt拦截jtoken验证

安装 npm install egg-jwt注册插件 在config文件夹子下 plugin,js下 use strict;module.exports {//mysqlmysql: {enable: true,package: egg-mysql},//jwtjwt: {enable: true,package: egg-jwt} };使用中间件 在app文件下创建 middleware 文件夹 在middleware 文件下创建…

睿趣科技:新手抖音开店卖什么产品好

抖音已经成为了一款年轻人热爱的社交媒体应用&#xff0c;同时也成为了一种全新的电商平台。对于新手来说&#xff0c;抖音开店卖什么产品是一个备受关注的问题。在这篇文章中&#xff0c;我们将探讨一些适合新手的产品选择&#xff0c;帮助他们在抖音上开店获得成功。 流行时尚…

毛玻璃态卡片悬停效果

效果展示 页面结构组成 页面的组成部分主要是卡片。其中卡片的组成部分主要是包括了图片和详情。 卡片的动效是鼠标悬停在卡片上时&#xff0c;图片会移动到左侧&#xff0c;并且图片是毛玻璃效果。所以我们在布局的时候图片会采用绝对布局。而详情则是基础布局。 CSS3 知识…