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

QT开发技术【QChart添加跟随鼠标的十字线】

一、效果:

在这里插入图片描述

二、思路添加item实现

scene中添加item
	m_pHorizontalLine = new QGraphicsLineItem();m_pHorizontalLine->setVisible(false);m_pHorizontalLine->setZValue(2);chart()->scene()->addItem(m_pHorizontalLine);m_pVerticalLine = new QGraphicsLineItem();m_pVerticalLine->setVisible(false);m_pVerticalLine->setZValue(2);chart()->scene()->addItem(m_pVerticalLine);m_pTips = new QGraphicsTextItem();m_pTips->setVisible(false);m_pTips->setZValue(2);chart()->scene()->addItem(m_pTips);

三、移动逻辑

void CCommonChartView::mouseMoveEvent(QMouseEvent* pEvent)
{if (m_bMouseCorssAble){QPointF pos = pEvent->pos();m_pHorizontalLine->setLine(0, pos.y(), viewport()->width(), pos.y());m_pVerticalLine->setLine(pos.x(), 0, pos.x(), viewport()->height());m_pTips->setPos(pos.x(), pos.y());m_pTips->setPlainText(QString(TransString2Unicode("  坐标: [%1, %2]")).arg(pos.x()).arg(pos.y()));update();}QChartView::mouseMoveEvent(pEvent);
}

四、完整代码

#include "../Include/CommonChartView.h"
#include "../Include/Conversion.h"CCommonChartView::CCommonChartView(QWidget* parent): QChartView(parent)
{InitChartView();
}CCommonChartView::CCommonChartView(QChart* chart, QWidget* parent): QChartView(chart, parent)
{InitChartView();
}CCommonChartView::~CCommonChartView()
{}void CCommonChartView::InitChartView()
{m_bMouseCorssAble = false;m_pHorizontalLine = nullptr;m_pVerticalLine = nullptr;m_pTips = nullptr;
}void CCommonChartView::SetMouseCorssAble(bool bEnable)
{m_bMouseCorssAble = bEnable;
}void CCommonChartView::InitCorssItem()
{m_pHorizontalLine = new QGraphicsLineItem();m_pHorizontalLine->setVisible(false);m_pHorizontalLine->setZValue(2);chart()->scene()->addItem(m_pHorizontalLine);m_pVerticalLine = new QGraphicsLineItem();m_pVerticalLine->setVisible(false);m_pVerticalLine->setZValue(2);chart()->scene()->addItem(m_pVerticalLine);m_pTips = new QGraphicsTextItem();m_pTips->setVisible(false);m_pTips->setZValue(2);chart()->scene()->addItem(m_pTips);
}void CCommonChartView::mouseMoveEvent(QMouseEvent* pEvent)
{if (m_bMouseCorssAble){QPointF pos = pEvent->pos();m_pHorizontalLine->setLine(0, pos.y(), viewport()->width(), pos.y());m_pVerticalLine->setLine(pos.x(), 0, pos.x(), viewport()->height());m_pTips->setPos(pos.x(), pos.y());m_pTips->setPlainText(QString(TransString2Unicode("  坐标: [%1, %2]")).arg(pos.x()).arg(pos.y()));update();}QChartView::mouseMoveEvent(pEvent);
}void CCommonChartView::enterEvent(QEvent* pEvent)
{if (m_bMouseCorssAble){m_pHorizontalLine->setVisible(true);m_pVerticalLine->setVisible(true);m_pTips->setVisible(true);}QChartView::enterEvent(pEvent);
}void CCommonChartView::leaveEvent(QEvent* pEvent)
{if (m_bMouseCorssAble){m_pHorizontalLine->setVisible(false);m_pVerticalLine->setVisible(false);m_pTips->setVisible(false);}QChartView::leaveEvent(pEvent);
}
http://www.xdnf.cn/news/179173.html

相关文章:

  • 信号量函数
  • MySQL快速入门篇---增删改查(下)
  • Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)
  • HTML基础完全解析
  • Astah Professional反向建模C++类图
  • 【记录解决问题】--vue select下拉框排除已选择option
  • MCP协议:AI生态的统一标准
  • LeetCode 24 两两交换链表中的节点
  • 半导体行业如何开展风险管理?有没有半导体风控案例参考?
  • 反序列化漏洞2
  • 贪吃蛇游戏demo
  • 计网二。。
  • css响应式布局设置子元素高度和宽度一样
  • Maven项目细节
  • re题(48)BUUCTF-[网鼎杯 2020 青龙组]singal
  • vue项目页面适配
  • Java学习--HashMap
  • 科技打头阵,创新赢未来——中科视界携千眼狼超高速摄像机亮相第三届科交会
  • 【HPC存储性能测试】02-ior带宽性能测试
  • acwing532. 货币系统
  • 【操作系统原理07】输入/输出系统
  • 常用的多传感器数据融合方法
  • 安卓屏播放语音失败,报错TextToSpeech: speak failed: not bound to TTS engine
  • risc-V学习日记(4):RV32I指令集
  • 开关电源实战(六)ADDC反激电源
  • 说一下Drop与delete区别
  • 在java中实现protobuf自定义协议
  • 通过ThreadLocal存储登录用户信息
  • LeetCode每日一题4.27
  • 【HPC存储性能测试】01-OpenMPI部署