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

做推广赚钱的网站南昌专业做网站公司有哪些

做推广赚钱的网站,南昌专业做网站公司有哪些,浙江省建设信息港网,旅游网站手机模板1、概述 源码放在文章末尾 该项目实现了带动画效果的多选框#xff0c;鼠标放在上面或者选中都会呈现炫酷的动画效果#xff0c;demo演示如下#xff1a; 项目部分代码如下所示#xff1a; #ifndef LINEARCHECKBOX_H #define LINEARCHECKBOX_H#include QCheckBox …1、概述 源码放在文章末尾 该项目实现了带动画效果的多选框鼠标放在上面或者选中都会呈现炫酷的动画效果demo演示如下 项目部分代码如下所示 #ifndef LINEARCHECKBOX_H #define LINEARCHECKBOX_H#include QCheckBox #include QPropertyAnimation #include QPainter #include QPainterPath #include QDebugclass AniCheckBox : public QCheckBox {Q_OBJECTQ_PROPERTY(double hover_prog READ getHoverProg WRITE setHoverProg)Q_PROPERTY(double part_prog READ getPartProg WRITE setPartProg)Q_PROPERTY(double check_prog READ getCheckProg WRITE setCheckProg) public:AniCheckBox(QWidget* parent nullptr);void setForeColor(QColor c);protected:void paintEvent(QPaintEvent *) override;void enterEvent(QEvent *e) override;void leaveEvent(QEvent *e) override;bool hitButton(const QPoint ) const override;virtual void checkStateChanged(int state);virtual void drawBox(QPainter painter, QRectF rect);QPropertyAnimation* startAnimation(const QByteArray property, double begin, double end, int duration 500, QEasingCurve curve QEasingCurve::OutQuad);protected:double getHoverProg() const;void setHoverProg(double prog);double getPartProg() const;void setPartProg(double prog);double getCheckProg() const;void setCheckProg(double prog);protected:int boxSide 0; // 选择框边长0为自适应QColor foreColor QColor(#2753ff); // 前景颜色double hoverProg 0; // 鼠标移上去的进度double partyProg 0; // 部分选中的进度double checkProg 0; // 选中的进度 };#endif // LINEARCHECKBOX_H #include anicheckbox.hAniCheckBox::AniCheckBox(QWidget *parent) : QCheckBox(parent) {setCursor(Qt::PointingHandCursor);connect(this, QCheckBox::stateChanged, this, [](int state) {// qInfo() 状态变化 static_castQt::CheckState(state);checkStateChanged(state);}); }void AniCheckBox::setForeColor(QColor c) {this-foreColor c; }void AniCheckBox::paintEvent(QPaintEvent *) {// QCheckBox::paintEvent(e);QPainter painter(this);// painter.setRenderHint(QPainter::Antialiasing, true);QRectF rect;double textLeft;if (boxSide 0){// 自适应大小优先一行文字大小其次按比例const double fixedProp 0.8; // 默认比例QFontMetricsF fm(painter.font());double side fm.height(); // 一行文字的高度if (side this-height() * fixedProp)side this-height() * fixedProp;double margin side / 2;rect QRectF(margin, (height() - side) / 2, side, side);textLeft rect.right() margin;}else{// 固定大小double margin (this-height() - boxSide) / 2;rect QRectF(margin, margin, boxSide, boxSide);textLeft rect.right() margin;}// 绘制选择框painter.save();drawBox(painter, rect);painter.restore();// 绘制文字painter.save();painter.drawText(QRectF(textLeft, 0, this-width() - textLeft, this-height()), this-text(), Qt::AlignVCenter | Qt::AlignLeft);painter.restore(); }void AniCheckBox::enterEvent(QEvent *e) {QCheckBox::enterEvent(e);startAnimation(hover_prog, getHoverProg(), 1); }void AniCheckBox::leaveEvent(QEvent *e) {QCheckBox::leaveEvent(e);startAnimation(hover_prog, getHoverProg(), 0); }bool AniCheckBox::hitButton(const QPoint ) const {return true; }void AniCheckBox::checkStateChanged(int state) {if (state Qt::Unchecked){startAnimation(check_prog, getCheckProg(), 0, 800, QEasingCurve::OutBounce);}else if (state Qt::PartiallyChecked){}else if (state Qt::Checked){startAnimation(check_prog, getCheckProg(), 1, 500, QEasingCurve::OutBack);} }void AniCheckBox::drawBox(QPainter painter, QRectF rect) {painter.setPen(foreColor);painter.setRenderHint(QPainter::Antialiasing, true);// 绘制边缘方框和悬浮状态有关double radius 3;radius * (1 - hoverProg);painter.drawRoundedRect(rect, radius, radius);// 绘制选中状态int state this-checkState();double prop 0.6;prop * checkProg;rect QRectF(rect.left() rect.width() * (1 - prop) / 2,rect.top() rect.height() * (1 - prop) / 2,rect.width() * prop,rect.height() * prop);QPainterPath path;path.addRoundedRect(rect, radius, radius);painter.fillPath(path, foreColor);if (state Qt::Unchecked){}else if (state Qt::PartiallyChecked){}else if (state Qt::Checked){} }QPropertyAnimation *AniCheckBox::startAnimation(const QByteArray property, double begin, double end, int duration, QEasingCurve curve) {QPropertyAnimation* ani new QPropertyAnimation(this, property);ani-setStartValue(begin);ani-setEndValue(end);ani-setDuration(duration);ani-setEasingCurve(curve);connect(ani, SIGNAL(finished()), ani, SLOT(deleteLater()));connect(ani, SIGNAL(valueChanged(const QVariant)), this, SLOT(update()));ani-start();return ani; }double AniCheckBox::getHoverProg() const {return hoverProg; }void AniCheckBox::setHoverProg(double prog) {this-hoverProg prog; }double AniCheckBox::getPartProg() const {return partyProg; }void AniCheckBox::setPartProg(double prog) {this-partyProg prog; }double AniCheckBox::getCheckProg() const {return checkProg; }void AniCheckBox::setCheckProg(double prog) {this-checkProg prog; } 源码下载
http://www.hkea.cn/news/14375464/

相关文章:

  • 沈阳市建网站网站制作留钱
  • 企业网站优化排名域名抢注网站源码
  • 搬瓦工的主机可以用来做网站吗东营网站优化
  • 建设部网站官网四库一平台福州网站推广优化
  • 为什么有的网站点不开上海房地产网站官网
  • 专业网站设计 软件做软件赚钱的网站
  • 医院网站素材做任务的兼职网站
  • 网站开发系统的可行性研究报告牡丹江网站建设定制开发
  • 做直播网站需要多少钱wordpress免费响应式主题
  • 建设银行网站打不开用什么浏览器移动端网站建设服务商
  • 网站及新媒体账号建设发布形式discuz论坛和网站同步登录
  • 网站建设策划书网页设计phpcms网站打不开
  • 网站建设资源平台钢结构人才网
  • 物流网站的建设方案总结杭州外贸网站建设公司申跃
  • 城阳做网站的北京网站制作公司哪家好
  • 网站互动推广专业团队是什么意思
  • 建设银行的英语网站html免费的模板网站有哪些
  • 信誉好的龙岗网站设计兰州电商网站建设
  • 手机能访问asp网站国内十大旅游网站排名
  • 创建站点的方法网站首页建设网
  • 广州建站平台哪家好桥头网站仿做
  • 网站办事服务建设情况成都企业建站公司在线咨询
  • 英文网站建设流程wordpress 代码框
  • wordpress主题后门代码合肥seo网络优化公司
  • 全是图片的网站怎么做seo中国 庆阳
  • 建站系统有哪些html手机网站开发
  • 找外包公司做网站价钱深圳旅游
  • 在国外做盗版网站四川建筑从业人员查询
  • 电商网站建设步骤西宁市网站设计
  • 万网云虚拟主机上传网站网页版梦幻西游决战华山攻略