使用QML中的CircularGauge控件,需要import QtQuick.Extras 1.4
Gauge.qml:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.4
import QtQuick.Extras 1.4
import QtQuick.Extras.Private 1.0
import QtGraphicalEffects 1.0CircularGauge {id: gaugestyle: CircularGaugeStyle {labelStepSize: 10labelInset: outerRadius / 2.2tickmarkInset: outerRadius / 4.2minorTickmarkInset: outerRadius / 4.2minimumValueAngle: -144maximumValueAngle: 144background: Rectangle {implicitHeight: gauge.heightimplicitWidth: gauge.widthcolor: "black"anchors.centerIn: parentradius: 360Image {anchors.fill: parentsource: "qrc:/img/background.svg"asynchronous: truesourceSize {width: width}}Canvas {property int value: gauge.valueanchors.fill: parentonValueChanged: requestPaint()function degreesToRadians(degrees) {return degrees * (Math.PI / 180);}onPaint: {var ctx = getContext("2d");ctx.reset();ctx.beginPath();ctx.strokeStyle = "black"ctx.lineWidth = outerRadiusctx.arc(outerRadius,outerRadius,outerRadius - ctx.lineWidth / 2,degreesToRadians(valueToAngle(gauge.value) - 90),degreesToRadians(valueToAngle(gauge.maximumValue + 1) - 90));ctx.stroke();}}}needle: Item {y: -outerRadius * 0.78height: outerRadius * 0.27Image {id: needlesource: "qrc:/img/needle.svg"height: parent.heightwidth: height * 0.1asynchronous: trueantialiasing: true}Glow {anchors.fill: needleradius: 5samples: 10color: "white"source: needle}}foreground: Item {Text {id: speedLabelanchors.centerIn: parenttext: gauge.value.toFixed(0)font.pixelSize: outerRadius * 0.3color: "white"antialiasing: true}}tickmarkLabel:  Text {font.pixelSize: Math.max(6, outerRadius * 0.05)text: styleData.valuecolor: styleData.value <= gauge.value ? "white" : "#777776"antialiasing: true}tickmark: Image {source: "qrc:/img/tickmark.svg"width: outerRadius * 0.018height: outerRadius * 0.15antialiasing: trueasynchronous: true}minorTickmark: Rectangle {implicitWidth: outerRadius * 0.01implicitHeight: outerRadius * 0.03antialiasing: truesmooth: truecolor: styleData.value <= gauge.value ? "white" : "darkGray"}}
}

main.qml

import QtQuick 2.7
import QtQuick.Controls 2.0ApplicationWindow {id: windowwidth: 800height: 800visible: trueGauge {property bool acceleratingvalue: accelerating ? maximumValue : 0maximumValue: 250anchors {fill: parentmargins: window.height * 0.2}Component.onCompleted: forceActiveFocus()Behavior on value { NumberAnimation { duration: 1000 }}Keys.onSpacePressed: accelerating = trueKeys.onReleased: {if (event.key === Qt.Key_Space) {accelerating = false;event.accepted = true;}}}
}

效果:

Qt帮助文档中有一个仪表盘控件的例子:
代码:

import QtQuick 2.9
import QtQuick.Controls.Styles 1.4
import QtQuick.Extras 1.4
import QtQuick.Window 2.2Window {visible: truewidth: 500height: 500title: qsTr("Hello World")Rectangle {anchors {fill: parentmargins: 40}CircularGauge {id: gaugeanchors.fill: parentstyle: CircularGaugeStyle {labelInset: outerRadius * 0.2tickmarkLabel: nulltickmark: Text {text: styleData.valueText {anchors.horizontalCenter: parent.horizontalCenteranchors.top: parent.bottomtext: styleData.indexcolor: "blue"}}minorTickmark: Text {text: styleData.valuefont.pixelSize: 8Text {anchors.horizontalCenter: parent.horizontalCenteranchors.top: parent.bottomtext: styleData.indexfont.pixelSize: 8color: "blue"}}}}}
}

运行效果:

原作者的github代码下载:
https://github.com/zchydem/qt-examples/tree/master/gauge-example

相关参考:
运用QML制作圆形进度条效果:
https://blog.csdn.net/Shado_walker/article/details/51684865
QML中圆形进度仪表盘控件的使用:
https://blog.csdn.net/Shado_walker/article/details/73251691

QML一个漂亮的仪表盘相关推荐

  1. 如何设计一个漂亮的仪表盘—Jeecg仪表盘轻松实现【数据可视化专题】

    仪表盘是数据可视化的一种展现方式,是将数据以各类图表和图形化的方式,以视觉形式来呈现,从而帮助我们更加直观的了解数据展示的意义. 下面看看Jeecg低代码平台的仪表盘功能效果. 操作简单,通过拖拽即可 ...

  2. 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面...

    我们大家都梦想有个完美的各种信息管理系统,其实一个人又会数据库,又会C#.NET程序,还要精通HTML,还要精通CSS,更要精通JS,还有精力去写很多东西,又要调试前台又要调试后台,而且每开发一个系统 ...

  3. 一个漂亮的输出MySql数据库表结构的PHP页面

    经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这 ...

  4. myeclipse如何换一个漂亮的主题

    熟悉hbuilder的童鞋们都知道,在开发的时候主题有好几种可以随意切换,但是在开发java时用到的myeclipse的主题是否可以随意切换呢?如果可以在哪里切换,今天我们就来看看如何修改myecli ...

  5. java写七彩文字_【PS精选案例教程】创建一个漂亮的七彩文字

    原标题:[PS精选案例教程]创建一个漂亮的七彩文字 效果图: 步骤1. 新建一个文档(大小随意) 步骤2. 滤镜→渲染→云彩 步骤3. 可以按Ctrl+Alt+F增加效果 步骤4. Ctrl+J复制一 ...

  6. 【转】博客美化(3)为博客添加一个漂亮的分享按钮

    阅读目录 1.社会化分享 2.选择一个分享按钮 3.添加到博客园博客 博客园美化相关文章目录:博客园博客美化相关文章目录 在前2篇博客"博客美化(1)基本后台设置与样式设置"与&q ...

  7. Android一个漂亮的日历组件源码

    简介: Android 一个漂亮的日历组件源码主要特性 日历样式完全自定义,拓展性强 左右滑动切换上下周月,上下滑动切换周月模式 抽屉式周月切换效果 标记指定日期(marker) 跳转到指定日期 下载 ...

  8. 一个漂亮而强大的自定义view

    代码地址如下: http://www.demodashi.com/demo/13502.html 简介 主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性 ...

  9. 一个漂亮而强大的RecyclerView

    代码地址如下: http://www.demodashi.com/demo/13470.html 简介 主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果.极简通用的万能适配器 ...

最新文章

  1. python计时器精度_在python中获得更精确的计时器
  2. Java数据结构一 —— Java Collections API中的表
  3. 去水印--《On the Effectiveness of Visible Watermarks》
  4. ajax获取php echo值,ajax 接受 php echo 与 return 区别
  5. html表格标签模板 实现跨行和跨列
  6. 【freemarker】渲染列表一系列操作
  7. 第十天:估算活动持续时间
  8. JUnit 5和Selenium –使用Gradle,JUnit 5和Jupiter Selenium设置项目
  9. leetcode 746 python 动态规划
  10. distinct性能问题_Mysql性能优化:如何给字符串加索引?
  11. CDN、SCDN、DCDN是什
  12. 制作WIN_XP无人值守光盘
  13. 用增广矩阵的秩判断N线性方程的解的个数
  14. 《赋予角色移动时的动画》part02——动画蓝图
  15. 对策论基础---矩阵对策的基本定理
  16. 在浏览器的标签页显示网站标志图标(或指定图标)的方法
  17. 【STM32】NVIC中断优先级管理(中断向量表)
  18. 移动端电影院:享受触手可及的幸福
  19. 简历准备(一)—— 科大讯飞 (CV方向)
  20. 2017年三月初大厂前端面试总结

热门文章

  1. 讨论,您如何阅读论文?
  2. java中关于图片的操作
  3. ICCV 2021: 手绘图变动画
  4. Google Code Jam 2017 资格赛
  5. 1003. Universal Travel Sites (35)解题报告
  6. 使用ROT13加密解密
  7. Unity3D人物换装
  8. 以ofo为代表的共享经济退烧后,风投目光转向了芯片!
  9. 《财务自由之路》读后感
  10. 多张图片怎么统一修改尺寸?