资源简介
QT自绘滑条控件Slider,可设置横向和纵向,单滑块或者双滑块
效果图:https://blog.csdn.net/qq_22723497/article/details/88723666
代码片段和文件信息
#include “MySlider.h“
MySlider::MySlider(QWidget *parent)
: QWidget(parent)
m_MinRange(0.00f)
m_MaxRange(100.00f)
m_singleStep(0.5f)
m_curMinValue(0.00f)
m_curMaxValue(100.00f)
m_state(None)
m_lastHandle(None)
m_Sliderstyle(Single_HorizontalSlider)
m_Handlestyle(Polygon)
// m_Handlestyle(Rectangle)
// m_Handlestyle(Circular)
m_sliderColor(QColor(46 49 53))
m_sliderSelectionColor(QColor(154 205 50))
m_sliderHandleColor(QColor(154 205 50))
m_unSliderHandleColor(Qt::darkGray)
m_overlapOffset(0)
m_textBrush(false)
{
setFocusPolicy(Qt::ClickFocus); //设置获取焦点的方式
}
MySlider::~MySlider()
{
}
void MySlider::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
QPainter painter(this);
//--- 绘制窗口边框 ---//
//painter.drawRect(0 0 width() - 1 height() - 1);
//--- 计算坐标 ---//
if (m_Sliderstyle == Single_HorizontalSlider || m_Sliderstyle == Double_HorizontalSlider) //是水平活动条
{
if (m_Handlestyle == Polygon || m_Handlestyle == Rectangle)
{
m_minX = m_curMinValue * (width() - 8) / m_MaxRange + 4; //将当前最小值转为x坐标
m_maxX = m_curMaxValue * (width() - 8) / m_MaxRange + 4; //将当前最大值转为x坐标
}
else
{
m_minX = m_curMinValue * (width() - 12) / m_MaxRange + 6; //将当前最小值转为x坐标
m_maxX = m_curMaxValue * (width() - 12) / m_MaxRange + 6; //将当前最大值转为x坐标
}
}
else if (m_Sliderstyle == Single_VerticalSlider || m_Sliderstyle == Double_VerticalSlider) //是垂直滑动条
{
if (m_Handlestyle == Polygon || m_Handlestyle == Rectangle)
{
m_minY = height() - m_curMinValue * (height() - 8) / m_MaxRange - 4; //将当前最小值转为x坐标
m_maxY = height() - m_curMaxValue * (height() - 8) / m_MaxRange - 4; //将当前最大值转为x坐标
}
else
{
m_minY = height() - m_curMinValue * (height() - 12) / m_MaxRange - 6; //将当前最小值转为x坐标
m_maxY = height() - m_curMaxValue * (height() - 12) / m_MaxRange - 6; //将当前最大值转为x坐标
}
}
//--- 绘制槽 ---//
paintSlider(&painter);
//--- 绘制滑块 ---//
paintHandle(&painter);
//--- 绘制当前值 ---//
paintText(&painter);
}
void MySlider::paintSlider(QPainter* painter)
{
switch (m_Sliderstyle)
{
case Single_HorizontalSlider:
paintRectangle(QRect(4 23 width() - 8 2) m_sliderColor painter); //绘制底槽
paintRectangle(QRect(4 23 m_minX 2) m_sliderSelectionColor painter); //绘制选中槽
break;
case Double_HorizontalSlider:
paintRectangle(QRect(4 23 width() - 8 2) m_sliderColor painter);
paintRectangle(QRect(m_minX 23 m_maxX - m_minX 2) m_sliderSelectionColor painter);
break;
case Single_VerticalSlider:
paintRectangle(QRect(17 4 2 height() - 8) m_sliderColor painter);
paintRectangle(QRect(17 m_minY 2 height() - m_minY - 4) m_sliderSelectionColor painter);
break;
case Double_VerticalSlider:
paintRectangle(QRect(17 4 2 height() - 8) m_sliderColor painter);
paintRectangle(QRect(17 m_minY 2 m_maxY - m_minY) m_sliderSelectionColor painter);
break;
default
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3892 2019-03-21 19:06 MySlider.h
文件 17839 2019-03-21 19:12 MySlider.cpp
----------- --------- ---------- ----- ----
21731 2
相关资源
- A星算法代码QT运行
- libcurl.lib 支持HTTPS的静态库
- QT带有滑动效果的图片浏览器
- 基于Qt的图像采集系统
- 拓扑排序输出所有可能的拓扑排序
- qt的小波分解程序
- 人脸识别在arm板上的实现
- 本人转载 在此申明 语法树 c 实现 四
- qt日历控件
- Qt中用qwt实现动态绘制二维曲线
- Qt 模拟软键盘
- 教学计划编制问题
- QT音乐播放器120395
- Qt界面多线程opencv调用摄像头
- gh0st源码笔记_详解.
- QWebEngineView实现聊天窗
- logo识别项目
- QT 小游戏 加农炮 源码 +教程刚刚把源
- 根据星历文件计算卫星精确坐标
- VS2012 ActiveX开发
- qt可以使用的AES加密的类
-
Qt/em
bedded的嵌入式导航电子地图实 - Qt静态库的生成及调用
- Direct2D 五子棋
- 智慧大棚QT界面设计
- QT水波进度条DEMO
- qt designer
- OpenCV 3和Qt5计算机视觉应用开发_源码
- 用于录音 ,适用于语言识别,说话人
- Qt高仿网易云音乐界面源码
评论
共有 条评论