资源简介
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
相关资源
- 酒店管理系统基于Qt Creator5)
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- vtk QT做的三维地质可视化系统2of2
- 用VC 编写的仿QQ聊天室程序源代码
- Qt局域网聊天软件
- 外点法程序
- 外罚函数程序
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - QT 实现文件下载
- qt图像处理
- 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
评论
共有 条评论