当前位置: 首页 > news >正文

摄影网站怎么做数据库百度推广关键词和创意

摄影网站怎么做数据库,百度推广关键词和创意,源码如何搭建网站,哪些网上可以赚钱的网站系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…

系列文章目录

01 Qt自定义风格控件的基本原则-CSDN博客

02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客

03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客

04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客

05 扩展组件:自定义CheckBox组件-CSDN博客


目录

系列文章目录

前言

一、示意效果

二、实现思路

1.概述

2.功能接口举例

3.部分渲染代码

1.动画触发时机

2.响应动画的数值变化以及状态变化

 3.根据动画中间差值,渲染背景以及Handle

3.1 渲染Switch背景色 

3.2 渲染Swith滑块 

总结


前言

开关控件(Switch Control)不在Qt基本组件库里面,但是在我们的日常业务开发中极其常见。

开关控件通常用于在用户界面中表示两种状态(打开和关闭、开和关等),用户可以通过点击或拖动来切换状态。然而, 如果单纯的根据两种状态进行Icon的切换又略显单调些,所以本篇想向大家分享的是具有开关动画效果的Switch按钮组件!

既聊代码也说思路,我们开始今天的动画Swich动画开关组件的分享!


一、示意效果

二、实现思路

1.概述

1.为了沿用Qt 按钮组件的基本功能接口,所以我们继承的基类应该选择QAbstractButton而不是QWidget

2.从Swich组件的元素来看,我们可以拆解为三部分逻辑:

  •         圆角矩形背景
  •         圆形滑块
  •         滑块左右移动的动画

综上所述,我们需要用到的模块包括:

  •         QPainterPath类:Qt 中用于描述和绘制复杂图形路径的类
  •         QVariantAnimation:Qt 中用于执行属性动画的类,它可以用于对任意类型的属性进行动画效果的处理

2.功能接口举例

class QUIEXTPLUGIN_EXPORT QUiSwitchButton : public QAbstractButton
{Q_OBJECTenum AnimationType{None= 0,      //静态状态下OnAnimation ,//打开动画从左向右滑动OffAnimation,    //关闭动画从右向左滑动};
public:QUiSwitchButton(QWidget *parent);~QUiSwitchButton();//设置开状态下文本色void setSwitchOnTextColor(const QColor& clr);//设置关状态下文本色void setSwitchOffTextColor(const QColor& clr);//设置开状态下背景色void setSwitchOnColor(const QColor& clr);//设置关状态下背景色void setSwitchOffColor(const QColor& clr);//设置diasbale颜色void setSwitchDisableColor(const QColor& clr);//设置滑块背景色void setHandleColor(const QColor& clr);
protected:void mouseReleaseEvent(QMouseEvent *pEvt) override;void paintEvent(QPaintEvent *e) override;void drawBackground(QStylePainter*);void drawHandler(QStylePainter*);//void startAnimation();double getCurAnimaValue()const;QColor styledBackgroundColor()const;
protected slots:void handleAnimValueChanged(QVariant val);void handleAnimStateChanged(QVariantAnimation::State);
private:QPointer<QVariantAnimation> m_pAnima;QColor m_clrOnText;QColor m_clrOffText;QColor m_clrOn;QColor m_clrOff;QColor m_clrDisable;QColor m_clrHandler;int m_iHandlerMargin;double m_dCurFrame;AnimationType m_eCurAniType;
}

3.部分渲染代码

1.动画触发时机

void QUiSwitchButton::mouseReleaseEvent(QMouseEvent *pEvt)
{startAnimation();QAbstractButton::mouseReleaseEvent(pEvt);
}

2.响应动画的数值变化以及状态变化


void QUiSwitchButton::handleAnimStateChanged(QVariantAnimation::State curState)
{if (QVariantAnimation::Stopped == curState){m_eCurAniType = None;}update();
}

void QUiSwitchButton::handleAnimValueChanged(QVariant val)
{m_dCurFrame = val.toDouble();update();
}

 3.根据动画中间差值,渲染背景以及Handle


void QUiSwitchButton::paintEvent(QPaintEvent *pEvt)
{Q_UNUSED(pEvt);QStylePainter paint(this);paint.setRenderHints(QPainter::Antialiasing);drawBackground(&paint);drawHandler(&paint);drawText(&paint);
}

PS:这里要说的是,渲染顺序是有规则的,要根据元素的层级以及依赖顺序来决定 

3.1 渲染Switch背景色 

这里要注重点的是QPainterPath的使用以及其渲染规则的不同效果!


void QUiSwitchButton::drawBackground(QStylePainter* paint)
{QRect rcFrame = contentsRect();QRect rcLeft = rcFrame;//左边圆弧QRect rcMiddle = rcFrame;//中间矩形QRect rcRight = rcFrame;//右边圆弧QPainterPath path;path.setFillRule(Qt::WindingFill);//设置填充规则//左rcLeft.setWidth(rcLeft.height());path.addEllipse(rcLeft);//中rcMiddle.adjust(rcLeft.width() / 2, 0, -rcLeft.width() / 2, 0);path.addRect(rcMiddle);//右rcRight.adjust(rcMiddle.width(), 0, 0, 0);path.addEllipse(rcRight);paint->fillPath(path, styledBackgroundColor());
}
3.2 渲染Swith滑块 

这里的重点则是实时计算滑块的中心位置并计算


void QUiSwitchButton::drawHandler(QStylePainter* paint)
{//以滑块中心为分界点QRect rcFrame = contentsRect();QRect rcHandler;int iAnimSpan = rcFrame.width() - rcFrame.height();QPoint ptCenter(rcFrame.width() - rcFrame.height() / 2 - iAnimSpan * (1.0 - getCurAnimaValue()), rcFrame.height() / 2);rcHandler = QRect(ptCenter.x() - rcFrame.height() / 2, 0, rcFrame.height(), rcFrame.height());rcHandler = rcHandler.marginsRemoved(QMargins(m_iHandlerMargin, m_iHandlerMargin, m_iHandlerMargin, m_iHandlerMargin));QPainterPath path;path.addEllipse(rcHandler);paint->fillPath(path, m_clrHandler);
}

总结

以上就是今天要分享的:Qt如何自绘 Switch开关动画按钮的内容!

既聊思路,也说代码!我们下次继续分享自定义风格扩展组件!

PS:本专栏所有篇幅涉及的UI扩展组件类,后面会封装成插件动态库,感兴趣的同学可以留言哦!


文章转载自:
http://affinity.hwLk.cn
http://marlin.hwLk.cn
http://eeriness.hwLk.cn
http://aficionada.hwLk.cn
http://winnow.hwLk.cn
http://astrid.hwLk.cn
http://platelet.hwLk.cn
http://trickster.hwLk.cn
http://nubbin.hwLk.cn
http://reubenite.hwLk.cn
http://microcopy.hwLk.cn
http://nonuse.hwLk.cn
http://fructosan.hwLk.cn
http://spacemark.hwLk.cn
http://sensitively.hwLk.cn
http://harrovian.hwLk.cn
http://wept.hwLk.cn
http://contralateral.hwLk.cn
http://ecbatic.hwLk.cn
http://koumiss.hwLk.cn
http://disputably.hwLk.cn
http://compactor.hwLk.cn
http://mayon.hwLk.cn
http://perilymph.hwLk.cn
http://tardenoisian.hwLk.cn
http://pictorialization.hwLk.cn
http://dolichocephaly.hwLk.cn
http://holily.hwLk.cn
http://harpoon.hwLk.cn
http://jeanswear.hwLk.cn
http://eddy.hwLk.cn
http://overhappy.hwLk.cn
http://inattention.hwLk.cn
http://differentiation.hwLk.cn
http://lungee.hwLk.cn
http://rhapsodise.hwLk.cn
http://pharyngitis.hwLk.cn
http://dilapidator.hwLk.cn
http://caressingly.hwLk.cn
http://clectroscope.hwLk.cn
http://hieromonach.hwLk.cn
http://ulterior.hwLk.cn
http://posture.hwLk.cn
http://neglect.hwLk.cn
http://rhubarb.hwLk.cn
http://lisping.hwLk.cn
http://superette.hwLk.cn
http://krimmer.hwLk.cn
http://mantoux.hwLk.cn
http://aberrancy.hwLk.cn
http://duly.hwLk.cn
http://diver.hwLk.cn
http://devisor.hwLk.cn
http://ecumene.hwLk.cn
http://blurb.hwLk.cn
http://montanic.hwLk.cn
http://phrygia.hwLk.cn
http://sided.hwLk.cn
http://epiphyllous.hwLk.cn
http://unmannered.hwLk.cn
http://orris.hwLk.cn
http://rightward.hwLk.cn
http://kilogauss.hwLk.cn
http://horoscopical.hwLk.cn
http://kymogram.hwLk.cn
http://submatrix.hwLk.cn
http://circumambulate.hwLk.cn
http://monticulate.hwLk.cn
http://semihyaline.hwLk.cn
http://mockery.hwLk.cn
http://consequently.hwLk.cn
http://machicolation.hwLk.cn
http://triol.hwLk.cn
http://saturant.hwLk.cn
http://janitor.hwLk.cn
http://remscheid.hwLk.cn
http://obituary.hwLk.cn
http://psychosomatic.hwLk.cn
http://hamburger.hwLk.cn
http://haggardness.hwLk.cn
http://welkin.hwLk.cn
http://scintillogram.hwLk.cn
http://cockatrice.hwLk.cn
http://avens.hwLk.cn
http://asymptotical.hwLk.cn
http://immunopathology.hwLk.cn
http://dorsoventral.hwLk.cn
http://septennia.hwLk.cn
http://beating.hwLk.cn
http://canine.hwLk.cn
http://maltese.hwLk.cn
http://trigamist.hwLk.cn
http://isologue.hwLk.cn
http://waterbury.hwLk.cn
http://camerlengo.hwLk.cn
http://tailgunning.hwLk.cn
http://photocopy.hwLk.cn
http://faucal.hwLk.cn
http://malodorant.hwLk.cn
http://mipafox.hwLk.cn
http://www.15wanjia.com/news/90654.html

相关文章:

  • 营销培训班搜索引擎关键词优化方案
  • 网站开发的背景与环境站长综合查询工具
  • 查找公司注册信息的网站营销软文100字
  • wordpress qq音乐插件seo排名优化怎样
  • 团队主页 网站模板微信运营工具
  • 武汉本地最大的社区网站合肥百度快速排名提升
  • 个人站长做哪些网站好印度疫情最新消息
  • 360提示危险网站原因seo新手教程
  • 网页设计欣赏网站品牌营销推广策划方案
  • 官方网站手机 优帮云治疗腰椎间盘突出的特效药
  • 网站开发数据库连接失败株洲seo快速排名
  • 怎么用qq相册做网站重庆网站制作系统
  • 专做sm的网站销售找客户的方法
  • 哪个网站做民宿更好呢推广任务接单平台
  • 甘肃建设项目审批权限网站广东疫情最新情况
  • 旅游网站平台建设的方案招工 最新招聘信息
  • 装饰网站建设多少钱58网络推广
  • 网站建设策划方案模板网站关键词优化外包
  • 网站建设 空间5188关键词挖掘
  • 建站wordpress 基础seo优化排名易下拉效率
  • 国外设计参考网站宁德市人民医院
  • wordpress博客优点成都网站排名优化公司
  • 石家庄网站开发价格互联网网络推广公司
  • 网站开发怎么做单页网站怎么优化
  • 下城区做网站seo顾问收费
  • 房产网站怎么做seo监控
  • 网站建设有什么工作如何seo搜索引擎优化
  • wordpress淘宝客模板下载seo数据
  • java视频网站开发技术网站建设策划书案例
  • 学平面设计怎么样啊百度seo排名点击