资源简介
QT自绘开关按钮,里边带预览图!手机上那种左右滑动开关按钮

代码片段和文件信息
#include “switchwidget.h“
CSwitchWidget::CSwitchWidget(QWidget *parent): QWidget(parent)
{
m_pressstyle = GRAPH_PRESSstyle_SYSTEM1;
//渐进色
m_offbkcolor1 = QColor(133 133 133); //分开背景色1
m_offbkcolor2 = QColor(99 99 99); //分开背景色2
//渐进色
m_onbkcolor1 = QColor(91 137 14); //闭合背景色1
m_onbkcolor2 = QColor(711038); //闭合背景色2
m_slidecolor1 = QColor(252 252 252);
m_slidecolor2 = QColor(224 224 224);
m_textcolor = QColor(255 255 255);
m_textfont = QFont(QString::fromLocal8Bit(“宋体“) 10);
m_offname = QString::fromLocal8Bit(“分“);
m_onname = QString::fromLocal8Bit(“合“);
m_state = 0;
}
CSwitchWidget::~CSwitchWidget()
{
}
void CSwitchWidget::mousePressEvent(QMouseEvent * event)
{
QPoint cursorpos = event->pos();
int x = cursorpos.x();
int y = cursorpos.y();
if (event->button() == Qt::LeftButton) {
if (x < width() / 2.0) emit StateChanged(1);
else emit StateChanged(0);
}
repaint();
QWidget::mousePressEvent(event);
}
void CSwitchWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QRect widgetrect(0 0 width() height());
DrawPressstyle(&painter widgetrect m_state);
//QPalette pa;
//QBrush brush(Qt::NoBrush);
//qDrawShadePanel(&painter 0 0 width() height() pa TRUE 2 &brush);
}
void CSwitchWidget::DrawPressstyle(QPainter *painter QRect &rect uchar state)
{
if (painter == NULL) return;
DrawPressBkGround(painter rect state); //绘制背景
DrawPressText(painter rect state); //绘制文字
DrawPressSlide(painter rect state); //绘制滑块
}
void CSwitchWidget::DrawPressBkGround(QPainter *painter QRect &rect uchar state)
{
QBrush oldbrush = painter->brush();
QPen oldpen = painter->pen();
painter->save();
int panestyle = GetPressstyle();
int x1 = rect.left(); int y1 = rect.top();
int x2 = rect.right(); int y2 = rect.bottom();
int width = rect.width(); int height = rect.height();
if (panestyle == GRAPH_PRESSstyle_SYSTEM1) { //矩形背景、方形滑块
if (state > 0) { //投入状态
painter->setPen(Qt::NoPen);
QLinearGradient linGrad(rect.left() rect.top() rect.left() rect.bottom());
linGrad.setColorAt(0 m_onbkcolor1);
linGrad.setColorAt(1 m_onbkcolor2);
linGrad.setSpread(QGradient::PadSpread);
painter->setBrush(linGrad);
painter->drawRoundedRect(rect 5.0 5.0);
}
else { //退出状态
painter->setPen(Qt::NoPen);
QLinearGradient linGrad(rect.left() rect.top() rect.left() rect.bottom());
linGrad.setColorAt(0 m_offbkcolor1);
linGrad.setColorAt(1 m_offbkcolor2);
linGrad.setSpread(QGradient::PadSpread);
painter->setBrush(linGrad);
painter->drawRoundedRect(rect 5.0 5.0);
}
//画立体阴影......
painter->setBrush(Qt::NoBrush);
QPen tmppen(Qt::darkGray);
tmppen.setWidth(2.0);
painter->setPen(tmppen);
painter->drawRoundedRect(rect 5.0 5.0);
}
else if (panestyle == GRAPH_PRESSstyle_SYSTEM2) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10025 2014-02-11 10:03 switchwidget.cpp
文件 3016 2014-02-11 10:03 switchwidget.h
文件 6659 2014-02-11 10:36 widget.PNG
- 上一篇:网络安全课程设计 剖析特洛伊木马
- 下一篇:Labview数据断电自动保存
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- GDI自绘滚动条
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- 一个扩展的CComboBox 下拉框 自绘 美化
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- BmpButton
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- 开关电源的原理与设计 张占松编写
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- 一种基于LM3150 Buck型开关电源设计.p
- 基于BuckBoost拓扑的数字DCDC变换器设计
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
评论
共有 条评论