飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4484|回复: 6

[C/C++] 授人以鱼不如授人以渔-QT圆形刻度盘或者进度条各种计算公式

[复制链接]
  • TA的每日心情
    郁闷
    2017-1-19 11:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2017-1-19 11:09:03 | 显示全部楼层 |阅读模式
    网上从来都是现成的,没有找到过具体的计算公式,下面是我动手琢磨出来的,如果有问题还请指教!
    注释还是看不懂的贴到QT CREATOR里面一目了然

    具体公式代码中找

    具体公式代码中找


    [AppleScript] 纯文本查看 复制代码
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QLabel>
    #include <QMainWindow>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
        void paintEvent(QPaintEvent *event);
    private:
        Ui::MainWindow *ui;
        QLabel    *l1;
        QLabel    *l2;
        QLabel    *l3;
    };
    
    #endif // MAINWINDOW_H
    


    [AppleScript] 纯文本查看 复制代码
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QPainter>
    //当前值
    const int u =43;
    //最大刻度
    const int nMax = 100;
    //最小刻度
    const int nMin = 0;
    //旋转角度
    const double nPercentRotate = 40;
    //
    const int nMaxRadus = 200;
    
    const int nMinRadus = 150;
    
    const int nDistance = 50;
    //最外面的大圆
    const int nDistance2 = 70;
    //原点
     int nOrgXpos     = 0;
     int nOrgYpos     = 0;
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        nOrgXpos = width() / 2;
    
        nOrgYpos = height() / 2;
    
        l1 = new QLabel(this);
    
        l1->setText(QString("44"));
    
        l1->move(nOrgXpos   ,nOrgYpos );
    
        l2 = new QLabel(this);
    
        l3 = new QLabel(this);
    
        l2->setText(QString("Min"));
        //这个地方要注意
        l2->move(nOrgXpos - nMinRadus, nOrgYpos + nMinRadus );
    
        l3->setText(QString("Max"));
    
        l3->move(nOrgXpos  + (nMinRadus ) , nOrgYpos +  (nMinRadus ) );
    
    
    
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::paintEvent(QPaintEvent *event)
    {
        QColor use(112,222,121);
        QColor nouse(223,123,111);
        QPainter p(this);
        double nRotate = (360.0 - 2 * nPercentRotate) / (nMax - nMin);
        p.setRenderHint(QPainter::Antialiasing);
        p.setRenderHint(QPainter::SmoothPixmapTransform);
    
        p.save();
        p.translate(nOrgXpos, nOrgYpos);
        p.rotate(nPercentRotate);
        p.setPen(use);
        for(int i = 0 ; i < u; i++){
    
            p.drawLine(0,nMinRadus,0,nMaxRadus);
            p.rotate(nRotate);
        }
        p.setPen(nouse);
        for(int i = u ; i < nMax ; i++){
    
            p.drawLine(0,nMinRadus,0,nMaxRadus);
            p.rotate(nRotate);
        }
        p.restore();
    
        p.setPen(QColor(11,22,33));
        p.drawEllipse(nOrgXpos - nMinRadus + nDistance/2  , nOrgYpos  - nMinRadus  + nDistance/2   , nMinRadus * 2 - nDistance , nMinRadus * 2 - nDistance );
    
        p.restore();
        p.setPen(QColor(11,22,33));
        p.drawEllipse(nOrgXpos -  nMaxRadus - nDistance2/2  , nOrgYpos  -  nMaxRadus -  nDistance2/2 , nMaxRadus * 2 + nDistance2, nMaxRadus * 2 + nDistance2);
    }
    

    评分

    参与人数 2威望 +44 飘云币 +40 收起 理由
    PYG官方论坛 + 40 + 40 PYG有你更精彩!
    hzm55888 + 4 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-2-19 14:43
  • 签到天数: 69 天

    [LV.6]常住居民II

    发表于 2017-1-19 12:50:24 | 显示全部楼层
    看不懂,顶一个,太厉害了!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-1-19 11:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2017-1-19 13:07:38 | 显示全部楼层
    上传工程文件,qt 5.7.1 vs2013         加了 表针可以 还可以走!

    untitled1.zip

    5.48 KB, 阅读权限: 1, 下载次数: 3, 下载积分: 飘云币 -2 枚

    工程文件

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-3-2 10:57
  • 签到天数: 729 天

    [LV.9]以坛为家II

    发表于 2017-1-23 23:29:07 | 显示全部楼层
    权限不够,看不了更多。但是,代码使用的字体很好看。不知道叫什么名字?
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-4-26 11:17
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2017-3-10 06:46:37 | 显示全部楼层
    完全不明白!!!!感觉好厉害的样子
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表