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

西安高校网站建设百度禁止seo推广

西安高校网站建设,百度禁止seo推广,美食网站开发的目的和意义,wordpress插件放到哪提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、饼状图的关键接口二、关键代码1.鼠标移动事件2.核心判断逻辑 总结 前言 最近做了一个项目,需要当鼠标在饼状图上移动的时候展示Slice的内容&am…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、饼状图的关键接口
  • 二、关键代码
    • 1.鼠标移动事件
    • 2.核心判断逻辑
  • 总结


前言

最近做了一个项目,需要当鼠标在饼状图上移动的时候展示Slice的内容,现有的饼状图接口不能满足我的需求,所以我想到了手动实现追踪鼠标移动并判断落点是不是在图例内部。

主要难点在于将x,y点转变成极坐标并判断鼠标落在哪一个Slice上,从而实现定制化效果。


一、饼状图的关键接口

	setMouseTracking(true); // 鼠标追踪,必须打开_chart->layout()->setContentsMargins(0, 0, 0, 0);  // 设置图表外边距,0无边距_chart->setMargins(QMargins(0, 0, 0, 0));  // 设置图表内边距,0无边距_series->setPieSize(pPieSize); //这里pPieSize是0.6

二、关键代码

1.鼠标移动事件

先打开上面的鼠标追踪,一定要打开鼠标追踪,否则鼠标在Widget上的时候只会触发一次Move。

void XPieChart::mouseMoveEvent(QMouseEvent *event) {calculateInSlice(event->pos());QChartView::mouseMoveEvent(event);
}

2.核心判断逻辑

核心要点不复杂,先判断距离是不是小于半径(注意场景坐标转换)。其次xy坐标转换成极坐标,判断是不是在角度范围内即可。

void XPieChart::calculateInSlice(const QPoint &point) {// 坐标转换QPointF scenePos = mapToScene(point);QPointF chartPos = chart()->mapFromScene(scenePos);QRectF plotArea = chart()->plotArea();QPointF center = plotArea.center();qreal radius = qMin(plotArea.width(), plotArea.height()) / 2 * pPieSize;// 计算距离和角度qreal dx = chartPos.x() - center.x();qreal dy = chartPos.y() - center.y();qreal distance = sqrt(dx * dx + dy * dy);if (distance > radius) {  // 饼图之外updatePopupState(false);return;}
qDebug() << "chartPos: " << chartPos << " center: " << center;qreal angle = qRadiansToDegrees(qAtan2(dy, dx));qDebug() << "angle: " << angle;qreal pieAngle = 90 + angle;  // 转换为饼图角度系统if (pieAngle < 0) pieAngle += 360;// 遍历series查找sliceQPieSeries *series = nullptr;foreach (QAbstractSeries *s, chart()->series()) {series = qobject_cast<QPieSeries *>(s);if (series) break;}if (!series) {updatePopupState(false);return;}foreach (QPieSlice *slice, series->slices()) {qreal start = slice->startAngle();qreal span = slice->angleSpan();qreal end = start + span;bool inSlice = false;
if (end > 360) {if ((pieAngle >= start && pieAngle <= 360) || (pieAngle >= 0 && pieAngle <= end - 360)) {inSlice = true;}}else {if (pieAngle >= start && pieAngle <= end) {inSlice = true;}}
if (inSlice) {qDebug() << "pieAngle: " << pieAngle;qDebug() << "slice: " << slice->label() << " start: " << start << " span: " << span;_popupLabel->setText(slice->label());_popupValue->setText(QString::number(slice->value()));updatePopupState(true, point);break;
} else {updatePopupState(false);}
}

注意:如果Slice展开可能影响判断结果,需要计算Slice展开的距离差。


总结

1、思路比较透彻,没什么难度,适合定制化需求

http://www.dtcms.com/wzjs/407659.html

相关文章:

  • 装修招标网站网上推广专员是什么意思
  • 义乌小商品批发网合肥网络seo推广服务
  • 桃城网站建设百度关键词排名查询工具
  • 成都网站排名优化太原竞价托管公司推荐
  • 帮别人做买家秀的网站小程序怎么开发自己的小程序
  • 网站建设项目执行进度表关键词自动优化
  • 网站开发要先买服务器吗网络舆情处置的五个步骤
  • 正规的报价单格式搜索引擎优化的核心是
  • 韩式摄影网站源码龙华网站建设
  • 深圳网站制作公司哪家好制作公司网站大概多少钱
  • 电商卖货平台专业seo排名优化费用
  • wordpress 页面 锚无锡百度快照优化排名
  • 浙江网站怎么做推广百度网址大全 旧版本
  • 成都网站建设十强企业seo自然排名关键词来源的优缺点
  • 网站 绝对路径网站seo啥意思
  • 网站编程设计如何写备注企业推广的网站
  • 做样子的网站社区建站网站系统
  • wordpress企业站爱主题广州百度推广客服电话多少
  • 整体网站开发北京百度seo排名
  • 广东建设营销型网站今天最新军事新闻视频
  • wordpress 附件储存seo免费优化
  • 中国华能集团电子商务平台下载班级优化大师
  • wordpress文件管理湖南有实力seo优化哪家好
  • 网站开发流程 百度文库公司官网搭建
  • 深圳公明做网站百度搜索风云榜小说排行榜
  • 网上拿手工做的网站企业课程培训
  • 微信网页制作网站建设东莞百度搜索优化
  • 河南省的网页制作抖音seo关键词优化
  • 懂福溶州做戒网站网站整体优化
  • 做的网站不能放视频软件汽车品牌推广策划方案