资源简介
开发环境: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
- 上一篇:计算机体系结构第二版张晨曦 习题答案
- 下一篇:物联网前沿讲座报告
相关资源
- 酒店管理系统基于Qt Creator5)
- 最新版TTF16.OCX Formula One v. 6.1.6.2 控件
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- 可拖拽的甘特图控件(完整)
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QRMaker.ocx控件
- QT 实现文件下载
- qt图像处理
- MFC控件动态拖动
- QT,JPEG解码源代码(已完成)
- js实现的日历控件(经典好用)
- 上传大文件并显示进度条控件实例
- 组态王6.53树形控件实例
- 用FileSystemWatcher控件实现文件同步更新
- 毕业设计:网络围棋对弈
- Qt 播放音频文件
- 自定义的TabCtrl控件实现
- RadioButton控件
- “猜数字”游戏 算法破解
- OpenGL-3D坦克模拟
- 在delphi7下进行autocad二次开发的一个简
- powerdatagrid控件 源码
- 采用WINSOCK2 编写的TCP/UDP通信程序
- 大陆天堂2原代码
- PB做的俄罗斯方块
- animatedgif
评论
共有 条评论