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

杭州网站建设找思创网络做网站语言服务器 空间

杭州网站建设找思创网络,做网站语言服务器 空间,网站内容页相关性怎么做,公司建设网站需要什么资质界面样式 项目开发流程 1.通过QtCreator创建一个Qt Quick插件,插件命名为CarPanMod; 2.通过QtCreator创建一个Qt Quick Application,命名为QmlPro; 3.在插件CarPanMod中实现条形图,折线图和饼状图的绘制; 4.在应用程序QmlPro中,添加插件的导入路径; 5.在应用程序中,通过i…界面样式 项目开发流程 1.通过QtCreator创建一个Qt Quick插件,插件命名为CarPanMod; 2.通过QtCreator创建一个Qt Quick Application,命名为QmlPro; 3.在插件CarPanMod中实现条形图,折线图和饼状图的绘制; 4.在应用程序QmlPro中,添加插件的导入路径; 5.在应用程序中,通过import CarPanMod 1.0导入Qml文件即可访问插件中实现的各种图表. C++代码实现 条形图实现 barchartitem.h #ifndef BARCHARTITEM_H #define BARCHARTITEM_H#include QQuickPaintedItem #include QVector #include QPropertyAnimationclass BarChartItem : public QQuickPaintedItem {Q_OBJECTQ_PROPERTY(QVariantList data READ data WRITE setData NOTIFY dataChanged)Q_PROPERTY(QStringList labels READ labels WRITE setLabels NOTIFY labelsChanged)Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)Q_PROPERTY(QColor barColor READ barColor WRITE setBarColor NOTIFY barColorChanged)public:explicit BarChartItem(QQuickItem *parent = nullptr);void paint(QPainter *painter) override;// 属性访问器QVariantList data() const;void setData(const QVariantList data);QStringList labels() const;void setLabels(const QStringList labels);QString title() const;void setTitle(const QString title);QColor barColor() const;void setBarColor(const QColor color);protected:void hoverMoveEvent(QHoverEvent *event) override;void hoverLeaveEvent(QHoverEvent *event) override;signals:void dataChanged();void labelsChanged();void titleChanged();void barColorChanged();private:struct BarItem {QRectF rect;qreal value;bool highlighted = false;QColor color;};void updateChartLayout();void animateBar(int index, bool highlight);QVariantList m_data = {6324, 6793, 7476, 7892,8734, 9337, 9860, 10485,11230, 12100};QStringList m_labels = {"2014", "2015", "2016", "2017","2018", "2019", "2020", "2021","2022", "2023"};QString m_title = "全国平均房价(元/㎡)";QColor m_barColor = QColor("#3498db");QVectorBarItem m_bars;int m_hoveredIndex = -1;QPropertyAnimation *m_animation; };#endif // BARCHARTITEM_Hbarchartitem.cpp #include "barchartitem.h"#include QPainter #include QFontMetricsBarChartItem::BarChartItem(QQuickItem *parent): QQuickPaintedItem(parent), m_animation(new QPropertyAnimation(this)) {setAcceptHoverEvents(true);setFlag(ItemHasContents, true);setAntialiasing(true);m_animation-setPropertyName("barColor");m_animation-setDuration(300); }void BarChartItem::paint(QPainter *painter) {painter-setRenderHint(QPainter::Antialiasing);// 绘制背景 // painter-fillRect(boundingRect(), QColor("#f5f5f5"));painter-fillRect(boundingRect(),QColor("transparent"));// 计算布局updateChartLayout();// 绘制标题QFont titleFont = painter-font();titleFont.setPointSize(14);titleFont.setBold(true);painter-setFont(titleFont);painter-setPen(Qt::black);painter-drawText(QRectF(0, 10, width(), 30), Qt::AlignCenter, m_title);// 绘制坐标轴const qreal axisMargin = 50;const QLineF xAxis(axisMargin, height() - axisMargin, width() - axisMargin, height() - axisMargin);const QLineF yAxis(axisMargin, axisMargin, axisMargin, height() - axisMargin);painter-setPen(QPen(Qt::black, 2));painter-drawLine(xAxis);painter-drawLine(yAxis);// 绘制刻度QFont tickFont = painter-font();tickFont.setPointSize(8);painter-setFont(tickFont);// Y轴刻度qreal maxValue = 0;for (const auto v : m_data) {maxValue = qMax(maxValue, v.toReal());}const int yTicks = 5;for (int i = 0; i = yTicks; ++i) {qreal y = yAxis.y1() - (yAxis.length() / yTicks) * i;qreal value = maxValue / yTicks * i;painter-drawLine(QPointF(yAxis.x1() - 5, y), QPointF(yAxis.x1(), y));painter-drawText(QRectF(0, y - 10, yAxis.x1() - 10, 20),Qt::AlignRight | Qt::AlignVCenter,QString::number(value, 'f', 0));}// 绘制条形for (int i = 0; i m_bars.size(); ++i) {const BarItem bar = m_bars[i];QColor color = bar.highlighted ? bar.color.lighter(130) : bar.color;// 条形阴影painter-setPen(Qt::NoPen);painter-setBrush(QColor(0, 0, 0, 50));painter-drawRect(bar.rect.adjusted(3, 3, 3, 3));// 条形主体painter-setBrush(color);painter-setPen(QPen(Qt::white, 1));painter-drawRect(bar.rect);// 数值标签painter-setPen(Qt::black);painter-drawText(QRectF(bar.rect.x(), bar.rect.y() - 25,bar.rect.width(), 20),Qt::AlignCenter,QString::number(bar.value, 'f', 0));// X轴标签if (i m_labels.size()) {painter-drawText(QRectF(bar.rect.x(), height() - axisMargin + 5,bar.rect.width(), 20),Qt::AlignCenter, m_labels[i]);}}#if 0// 绘制图例if (!m_labels.isEmpty()) {QRectF legendRect(width() - 150, 40, 140, 30);painter-setBrush(m_barColor);painter-drawRect(legendRect.adjusted(0, 0, -110, 0));painter-drawText(legendRect, Qt::AlignRight | Qt::AlignVCenter, "房价趋势");} #endif }QVariantList BarChartItem::data() const {return m_data; }void BarChartItem::setData(const QVariantList data) {if(m_data != data){m_data = data;update();emit dataChanged();} }QStringList BarChartItem::labels() const {return m_labels; }void BarChartItem::setLabels(const QStringList labels) {if (m_labels != labels) {m_labels = labels;update();emit labelsChanged();} }QString BarChartItem::title() const {return m_title; }void BarChartItem::setTitle(const QString title) {if(m_title != title){m_title = title;update();emit titleChanged();} }QColor BarChartItem::barColor() const {return m_barColor; }void BarChartItem::setBarColor(const QColor color) {if(m_barColor != color){m_barColor = color;update();emit barColorChanged();} }void BarChartItem::updateChartLayout() {if (m_data.isEmpty()) return;const qreal axisMargin = 50;const qreal chartWidth = width() - axisMargin * 2;const qreal chartHeight = height() - axisMargin * 2;const qreal barSpacing = 10;const qreal barWidth = (chartWidth - barSpacing * (m_data.size() - 1)) / m_data.size();qreal maxValue = 0;for (const auto v : m_data) {maxValue = qMax(maxValue, v.toReal());}m_bars.resize(m_data.size());for (int i = 0; i m_data.size(); ++i) {qreal value = m_data[i].toReal();qreal barHeight = (value / maxValue) * chartHeight;m_bars[i].rect = QRectF(axisMargin + i * (barWidth + barSpacing),height() - axisMargin - barHeight,barWidth,barHeight);m_bars[i].value = value;m_bars[i].color = m_barColor;m_bars[i].highlighted = (i == m_hoveredIndex);} }void BarChartItem::animateBar(int index, bool highlight) {if (index 0 || index = m_bars.size()) return;m_animation-setStartValue(m_bars[index].color);m_animation-setEndValue(highlight ? m_barColor.lighter(130) : m_barColor);m_animation-setDuration(1000);m_animation-start(); }void BarChartItem::hoverMoveEvent(QHoverEvent *event) {const QPointF pos = event-pos();for (int i = 0; i m_bars.size(); ++i) {if (m_bars[i].rect.contains(pos)) {if (m_hoveredIndex != i) {m_hoveredIndex = i; // animateBar(i, true);update();}return;}}if (m_hoveredIndex != -1) {m_hoveredIndex = -1;update();} }void BarChartItem::hoverLeaveEvent(QHoverEvent *) {if (m_hoveredIndex != -1) { // animateBar(m_hoveredIndex, false);m_hoveredIndex = -1;update();} } 折线图实现 linechartitem.h
http://www.zqtcl.cn/news/441786/

相关文章:

  • 做网站优化哪家好远程管理wordpress站群
  • 实用写作网站做企业策划的公司
  • 如何建立自己手机网站58招聘网站官网
  • 网站程序源码下载网站怎么做定位功能
  • 深圳vi设计公司联系西安seo诊断
  • 老虎淘客系统可以做网站吗绍兴网站专业制作
  • 小公司做网站需要 align center
  • 自己做的网站怎么上传网络什么网站可以找人做系统
  • 公司在兰州要做网站怎样选择做期货关注什么网站
  • 响应式网站是指自适应吗新开传奇网站首区
  • 做网站产品介绍wordpress 参数 传递
  • 网站颜色搭配技巧建设摩托车价格大全
  • 哪些网站可以做画赚钱宁波模板建站定制
  • 昆明门户网站建设wordpress权限设置
  • 设计网站建设图片wordpress博客置顶
  • 网站上海网站建设网站数据建设涉及哪些内容
  • 3d效果图教程网站宁波网站建设慕枫科技
  • 视频结交网站怎么做想创建一个网站
  • 电商网站销售数据分析上海企业信息登记号查询
  • 网站建设规划设计公司排名无锡网站建设 君通科技
  • 徐州网站开发要多少钱给个人网站做百度百科
  • 法语网站建设免费网站为何收录比较慢
  • 品牌网站推广软件seo内链优化
  • 广东律师事务所东莞网站建设做网站 怎么备案
  • shopnc本地生活o2o网站源码wordpress文章内多页效果
  • 深圳全国网站制作哪个好页面设计有哪几种风格
  • 网页设计作业网站素材和效果图夏天做啥网站致富
  • 利用帝国软件如何做网站网站友链交换平台
  • 简述网站开发技术深圳网站设计合理刻
  • wordpress网站名称寻找销售团队外包