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

网络运维app系统西安seo网站管理

网络运维app系统,西安seo网站管理,合水网站建设,镇江企业网站目录 参考角度轴范围是[0,360]时,0度在水平右侧.h.cpp 参考 Qt数据可视化(QPolarChart雷达图) 默认QPolarChart的范围是[0,360]时,0度在垂直上方 如官方例子QValueAxis角度轴范围是[-100,100] 角度轴范围是[0,360]时,0度在水平右侧 原理&am…

目录

  • 参考
  • 角度轴范围是[0,360]时,0度在水平右侧
  • .h
  • .cpp

参考

Qt数据可视化(QPolarChart雷达图)

默认QPolarChart的范围是[0,360]时,0度在垂直上方
如官方例子QValueAxis角度轴范围是[-100,100]
在这里插入图片描述

角度轴范围是[0,360]时,0度在水平右侧

在这里插入图片描述



  • 原理:
  • 角度轴使用范围改为[-90,270],此时0度在水平右侧
  • 使用分类轴QCategoryAxis 代替 数值轴QValueAxis 重新指定 -90 到 0 度之间的标签;

注意:此方法只能实现简单效果;
复杂效果可以使用QGraphicsView实现顺时针旋转90°(此方法本人在开发遇到缩放比例问题就没有使用)
参考:qt界面旋转

.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPolarChart>
#include <QChartView>
#include <QScatterSeries>
#include <QList>
#include <QDebug>
#include <QLineSeries>
#include <QTimer>#include <QtCharts/QPolarChart>
#include <QtCharts/QAbstractAxis>
#include <QtCharts/QChart>
#include <QtCharts/QValueAxis>
#include <QtCharts/QCategoryAxis>
#include <QtCharts/QAbstractAxis>
QT_CHARTS_USE_NAMESPACE/*****************************************自定义***********************************************************/
QT_CHARTS_BEGIN_NAMESPACEclass QAbstractSeries;
class QAbstractAxis;class VPolarChart:public QChart
{Q_OBJECTQ_ENUMS(PolarOrientation)Q_FLAGS(PolarOrientations)public:enum PolarOrientation {PolarOrientationRadial = 0x1,	// 径向轴,Y:到圆心距离PolarOrientationAngular = 0x2	// 角度轴,X:角度 };Q_DECLARE_FLAGS(PolarOrientations, PolarOrientation)
public:VPolarChart(QGraphicsItem* parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags()) : QChart(QChart::ChartTypePolar, parent, wFlags){};~VPolarChart() {};// 径向轴void addRadialAxis(QValueAxis* radialAxis){if (radialAxis == nullptr || radialAxis->type() == QAbstractAxis::AxisTypeBarCategory) {qWarning("QAbstractAxis::AxisTypeBarCategory is not a supported axis type for polar charts.");return;}QChart::addAxis(radialAxis, Qt::AlignLeft);}// 角度轴void addAngularAxis(QCategoryAxis* angularAxis){if (angularAxis == nullptr || angularAxis->type() == QAbstractAxis::AxisTypeBarCategory) {qWarning("QAbstractAxis::AxisTypeBarCategory is not a supported axis type for polar charts.");return;}angularAxis->setMin(-90);angularAxis->setMax(270);angularAxis->setStartValue(-90);if (angularAxis->categoriesLabels().isEmpty()|| angularAxis->categoriesLabels().size() < 9){angularAxis->append("270", -90); // 添加极坐标的角向标签angularAxis->append("315", -45);angularAxis->append("0", 0);angularAxis->append("45", 45);angularAxis->append("90", 90);angularAxis->append("135", 135);angularAxis->append("180", 180);angularAxis->append("225", 225);angularAxis->append("270", 270);}angularAxis->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue); // 设置标签位置QChart::addAxis(angularAxis, Qt::AlignBottom);}QList<QAbstractAxis*> axes(PolarOrientations polarOrientation = PolarOrientations(PolarOrientationRadial | PolarOrientationAngular), QAbstractSeries* series = nullptr) const {Qt::Orientations orientation(0);if (polarOrientation.testFlag(PolarOrientationAngular))		// 角度轴, X:角度orientation |= Qt::Horizontal; if (polarOrientation.testFlag(PolarOrientationRadial))	// 径向轴,Y:到圆心距离orientation |= Qt::Vertical;return QChart::axes(orientation, series);};static PolarOrientation axisPolarOrientation(QAbstractAxis* axis) {if (axis && axis->orientation() == Qt::Horizontal)return PolarOrientationAngular;		// 角度轴elsereturn PolarOrientationRadial;		// 径向轴};private:Q_DISABLE_COPY(VPolarChart)
};class VScatterSeries :public QScatterSeries
{
public:VScatterSeries(QObject* parent = nullptr) :QScatterSeries(parent) {};~VScatterSeries() {};void insert(qreal x, qreal y) {x = x > 270 ? x - 360 : x;QXYSeries::append(x,y);}
private:
};QT_CHARTS_END_NAMESPACE/*****************************************自定义***********************************************************/class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();void initConnect();void timeout();private:VPolarChart*m_ptrChart;            // 极坐标图QChartView *m_ptrChartview;QTimer *m_ptrTime;qreal m_rangle;                     // 角
};#endif  // WIDGET_H

.cpp

#include "widget.h"#include <QSplineSeries>Widget::Widget(QWidget* parent): QWidget(parent), m_ptrChart(new VPolarChart), m_ptrChartview(new QChartView(m_ptrChart, this)), m_ptrTime(new QTimer), m_rangle(0)
{// 抗锯齿m_ptrChartview->setRenderHint(QPainter::Antialiasing);// 动画m_ptrChart->setAnimationOptions(QChart::GridAxisAnimations);// 表示曲线QSplineSeries* s = new QSplineSeries();s->append(0, 0);s->append(m_rangle, 270);VScatterSeries* series = new VScatterSeries();		// 创建一个散点绘图数据集对象const qreal angularMax = 270;						// 最大角度series->setName("散点");for (int i = 0; i < angularMax; i += 10) {series->insert(i, i);							// 向series中添加数据,X:角度 Y:到圆心距离}
// 	series->setPointLabelsVisible(true); 
// 	series->setPointLabelsFormat("(@xPoint, @yPoint)"); m_ptrChart->legend()->setVisible(true);				// 隐藏图例//径向轴Y:到圆心距离QValueAxis* radialAxis = new QValueAxis();radialAxis->setTickCount(3);radialAxis->setLabelFormat("%d");m_ptrChart->addRadialAxis(radialAxis);//角度轴X:角度 QCategoryAxis* angularAxis = new QCategoryAxis();angularAxis->setShadesVisible(true);				// 阴影angularAxis->setShadesBrush(QBrush(QColor(249, 249, 255)));m_ptrChart->addAngularAxis(angularAxis);m_ptrChartview->setFixedSize(500, 500);				//  QChartView 的大小设置为 500x500 像素m_ptrChart->addSeries(series);						// 将创建的series添加进图表中m_ptrChart->addSeries(s);series->attachAxis(angularAxis);series->attachAxis(radialAxis);s->attachAxis(angularAxis);s->attachAxis(radialAxis);initConnect();m_ptrTime->start(100);
}
void Widget::initConnect()
{connect(m_ptrTime, &QTimer::timeout, this, &Widget::timeout);
}void Widget::timeout()
{qInfo() << "start timeout";foreach(auto * serie, m_ptrChart->series()) {if (serie == nullptr) continue;//qInfo() << "item->type()" << item->type();if (serie->type() == QSplineSeries::SeriesTypeSpline) {//清空曲线系列的数据点dynamic_cast<QSplineSeries*>(serie)->clear();m_rangle = (m_rangle >= 270)?(-90.): m_rangle+1.5;//向曲线系列中添加数据点dynamic_cast<QSplineSeries*>(serie)->append(0, 0);dynamic_cast<QSplineSeries*>(serie)->append(m_rangle, 270);}}
}
Widget::~Widget() {}

文章转载自:
http://tinkerly.xtqr.cn
http://cytokinin.xtqr.cn
http://apodous.xtqr.cn
http://moola.xtqr.cn
http://msie.xtqr.cn
http://grouse.xtqr.cn
http://homespun.xtqr.cn
http://fritting.xtqr.cn
http://clerical.xtqr.cn
http://helminthoid.xtqr.cn
http://provisioner.xtqr.cn
http://arty.xtqr.cn
http://allo.xtqr.cn
http://backbreaker.xtqr.cn
http://osteometrical.xtqr.cn
http://knickerbockers.xtqr.cn
http://canalled.xtqr.cn
http://peri.xtqr.cn
http://emodin.xtqr.cn
http://dexiocardia.xtqr.cn
http://loggia.xtqr.cn
http://charisma.xtqr.cn
http://ayesha.xtqr.cn
http://covering.xtqr.cn
http://definability.xtqr.cn
http://siallite.xtqr.cn
http://disbandment.xtqr.cn
http://chrysophyte.xtqr.cn
http://brocade.xtqr.cn
http://sinneh.xtqr.cn
http://lazaret.xtqr.cn
http://annotator.xtqr.cn
http://kiblah.xtqr.cn
http://matildawaltzer.xtqr.cn
http://extended.xtqr.cn
http://reefer.xtqr.cn
http://as.xtqr.cn
http://ghaut.xtqr.cn
http://hydroscopic.xtqr.cn
http://calciphobic.xtqr.cn
http://topographic.xtqr.cn
http://whortleberry.xtqr.cn
http://petal.xtqr.cn
http://heftily.xtqr.cn
http://gossan.xtqr.cn
http://scantly.xtqr.cn
http://sundown.xtqr.cn
http://lemonlike.xtqr.cn
http://bloke.xtqr.cn
http://cesspool.xtqr.cn
http://pessimist.xtqr.cn
http://parsoness.xtqr.cn
http://paperhanging.xtqr.cn
http://danthonia.xtqr.cn
http://degauss.xtqr.cn
http://totalitarianism.xtqr.cn
http://tiddlywinks.xtqr.cn
http://apec.xtqr.cn
http://gynandromorph.xtqr.cn
http://insular.xtqr.cn
http://foal.xtqr.cn
http://leftism.xtqr.cn
http://pleurodont.xtqr.cn
http://panicmonger.xtqr.cn
http://tenurable.xtqr.cn
http://iphone.xtqr.cn
http://emancipationist.xtqr.cn
http://cocainist.xtqr.cn
http://jiujitsu.xtqr.cn
http://obliterate.xtqr.cn
http://zara.xtqr.cn
http://explanatory.xtqr.cn
http://hypogonadism.xtqr.cn
http://glenn.xtqr.cn
http://dioptometer.xtqr.cn
http://saheb.xtqr.cn
http://mutarotation.xtqr.cn
http://zoologist.xtqr.cn
http://slavdom.xtqr.cn
http://bimillennial.xtqr.cn
http://pippin.xtqr.cn
http://weatherboard.xtqr.cn
http://cantonize.xtqr.cn
http://hibakusha.xtqr.cn
http://skiogram.xtqr.cn
http://tricot.xtqr.cn
http://compend.xtqr.cn
http://efficiency.xtqr.cn
http://presenility.xtqr.cn
http://microcrystal.xtqr.cn
http://blueprint.xtqr.cn
http://lofter.xtqr.cn
http://inched.xtqr.cn
http://sia.xtqr.cn
http://semiangle.xtqr.cn
http://ruleless.xtqr.cn
http://brotherliness.xtqr.cn
http://plussage.xtqr.cn
http://mitriform.xtqr.cn
http://pelasgi.xtqr.cn
http://www.dt0577.cn/news/114555.html

相关文章:

  • 关于配色的网站推荐著名的营销成功的案例
  • 做最好的赚钱网站赣州seo优化
  • 有哪些做批发的网站有哪些网站维护合同
  • 如何将网站做成app软文案例500字
  • 烟台企业建站系统模板百度优化教程
  • 中国建设购物网站江苏seo团队
  • 衡阳做网站的公司河北高端网站建设
  • 婺源网站建设seo站群优化技术
  • 泰安工程建设信息网站2023年7月最新疫情
  • 做网站内链什么意思推广链接点击器app
  • 在线做带字头像的网站seo快速排名软件品牌
  • 做直播的视频在线观看网站无锡网络公司
  • 做网站,就上凡科建站搜索引擎优化seo课程总结
  • 网站服务器的选择seo的工作原理
  • 西安网站建设bieleng怎么搜索关键词
  • 现在的网站是用什么软件做的中国女排联赛排名
  • 长宁网站建设无锡做网站的公司
  • 三门峡住房和建设局网站软文新闻发稿平台
  • 服务好的徐州网站建设网站都有哪些
  • 免费php网站海南百度推广seo
  • 建网站需要什么技术数字营销公司排行榜
  • 信阳市网站建设什么是网站推广策略
  • wordpress音频播放不了欧美seo查询
  • 游戏开发需要学多久seo推广公司
  • 做外贸在什么网站好网站seo视频
  • 淘客网站开发视频教程开发制作app软件
  • 濮阳做网站企点下载
  • 政务门户网站建设的意义考研比较厉害的培训机构
  • 辽宁省建设科学研究院网站新闻发稿推广
  • wordpress 商用主题关键词优化seo费用