资源简介
开发环境: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
- 上一篇:计算机体系结构第二版张晨曦 习题答案
- 下一篇:物联网前沿讲座报告
相关资源
- 佐藤打印机SATO打印接口控件
- 远程桌面协议 (RDP)控件库
- Ubuntu下操作Excel,qt代码
- labview process monitor控件
- Qt图片浏览器 --基于Qt的Graphics View f
- sizekit2 XE10.2 窗体和控件自动缩放
- pb9下经过美化的按钮控件,图标按钮
- Delphi图片按钮控件,很好用
- Graphics Magic图像处理魔术师,含Delph
- 通用LED显示屏控件Delphi开发例程源码
- 百度万年历 日期选择控件 带农历节日
- TLssCalendar (支持农历的月历控件)
- duilib webkit内核浏览器控件
- qtnribbon2破解
- Delphi自动根据窗体大小缩放控件
- 移动端日期时间选择控件
- Qt软件开发 完整项目代码
- Delphi7串口程序(使用SPComm控件).ra
- delphi 画图撤销控件
- 日期控件---适用于微信、手机端
- formula one6 控件
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- SuperReport VC 报表控件以及源码.rar
- vclSkin5.6源码皮肤控件
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论