资源简介

开发环境:qt5.5+vs2013 此工程直接编译即可运行, 刻度尺控件,支持动画显示

资源截图

代码片段和文件信息

#pragma execution_character_set(“utf-8“)

#include “barruler.h“
#include “qpainter.h“
#include “qtimer.h“
#include “qdebug.h“

BarRuler::BarRuler(QWidget *parent) : QWidget(parent)
{    
    minValue = 0;
    maxValue = 100;
    value = 0;

    precision = 0;
    longStep = 10;
    shortStep = 1;
    space = 20;

    animation = false;
    animationStep = 0.5;

    bgColorStart = QColor(100 100 100);
    bgColorEnd = QColor(60 60 60);
    lineColor = QColor(255 255 255);

    barBgColor = QColor(220 220 220);
    barColor = QColor(100 184 255);

    reverse = false;
    currentValue = 0;
    timer = new QTimer(this);
    timer->setInterval(10);
    connect(timer SIGNAL(timeout()) this SLOT(updateValue()));

    setFont(QFont(“Arial“ 8));
}

BarRuler::~BarRuler()
{
    if (timer->isActive()) {
        timer->stop();
    }
}

void BarRuler::paintEvent(QPaintEvent *)
{
    //绘制准备工作启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //绘制背景
    drawBg(&painter);
    //绘制标尺
    drawRuler(&painter);
    //绘制柱状背景
    drawBarBg(&painter);
    //绘制柱状
    drawBar(&painter);
}

void BarRuler::drawBg(QPainter *painter)
{
    painter->save();
    painter->setPen(Qt::NoPen);
    QLinearGradient bgGradient(QPointF(0 0) QPointF(0 height()));
    bgGradient.setColorAt(0.0 bgColorStart);
    bgGradient.setColorAt(1.0 bgColorEnd);
    painter->setBrush(bgGradient);
    painter->drawRect(rect());
    painter->restore();
}

void BarRuler::drawRuler(QPainter *painter)
{
    painter->save();
    painter->setPen(lineColor);

    //绘制纵向标尺线 20的长度为刻度尺文字的宽度
    double initX = space + 20;
    double initY = space;
    QPointF topPot(initX initY);
    QPointF bottomPot(initX height() - space);
    painter->drawLine(topPot bottomPot);

    //绘制纵向标尺刻度
    double length = height() - 2 * space;
    //计算每一格移动多少
    double increment = length / (maxValue - minValue);
    //长线条短线条长度
    int longLineLen = 10;
    int shortLineLen = 7;

    //根据范围值绘制刻度值及刻度值
    for (int i = maxValue; i >= minValue; i = i - shortStep) {
        if (i % longStep == 0) {
            QPointF leftPot(initX + longLineLen initY);
            QPointF rightPot(initX initY);
            painter->drawLine(leftPot rightPot);

            QString strValue = QString(“%1“).arg((double)i 0 ‘f‘ precision);
            double fontWidth = painter->fontMetrics().width(strValue);
            double fontHeight = painter->fontMetrics().height();
            QPointF textPot(initX - fontWidth - 5 initY + fontHeight / 3);
            painter->drawText(textPot strValue);
        } else {
            if (i % (longStep / 2) == 0) {
                shortLineLen = 7;
            } else {
                shortLineLen = 4;
            }

            QPointF leftPot(initX + shortLineLen initY);
            QPointF rightPot(initX

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9331  2017-02-07 17:29  barruler 自绘尺条\barruler.cpp

     文件       5019  2017-02-10 17:11  barruler 自绘尺条\barruler.h

     文件        456  2017-02-08 09:33  barruler 自绘尺条\barruler.pro

     文件      23790  2017-12-28 18:05  barruler 自绘尺条\barruler.pro.user

     文件        937  2018-12-15 11:13  barruler 自绘尺条\barruler.sln

    ..A..H.     24064  2019-03-21 10:15  barruler 自绘尺条\barruler.v12.suo

     文件      15530  2018-12-15 10:42  barruler 自绘尺条\barruler.vcxproj

     文件       3557  2018-12-15 10:42  barruler 自绘尺条\barruler.vcxproj.filters

     文件        629  2018-12-15 10:42  barruler 自绘尺条\barruler.vcxproj.user

     文件      13096  2019-03-21 10:12  barruler 自绘尺条\Debug\moc_barruler.cpp

     文件       3606  2019-03-21 10:12  barruler 自绘尺条\Debug\moc_frmbarruler.cpp

     文件        850  2017-01-06 10:42  barruler 自绘尺条\frmbarruler.cpp

     文件        367  2017-01-06 08:57  barruler 自绘尺条\frmbarruler.h

     文件       2488  2018-12-15 11:13  barruler 自绘尺条\frmbarruler.ui

     文件       3080  2019-03-21 10:12  barruler 自绘尺条\GeneratedFiles\ui_frmbarruler.h

     文件        185  2017-02-08 09:32  barruler 自绘尺条\main.cpp

     目录          0  2018-12-15 10:42  barruler 自绘尺条\Debug

     目录          0  2018-12-15 10:42  barruler 自绘尺条\GeneratedFiles

     目录          0  2018-12-15 10:42  barruler 自绘尺条\Release

     目录          0  2019-03-21 10:16  barruler 自绘尺条

----------- ---------  ---------- -----  ----

               106985                    20


评论

共有 条评论