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

深圳企业学校网站建设wordpress 中文版本

深圳企业学校网站建设,wordpress 中文版本,广州代理记账公司,中国海峡建设公司官网一、概述 最近想做一个炫酷的悬浮式菜单#xff0c;考虑到菜单展开和美观#xff0c;所以考虑学习下Qt的动画系统和状态机内容#xff0c;打开QtCreator的示例教程浏览了下#xff0c;大致发现教程中2D Painting程序和Animated Tiles程序有所帮助#xff0c;如下图所示考虑到菜单展开和美观所以考虑学习下Qt的动画系统和状态机内容打开QtCreator的示例教程浏览了下大致发现教程中2D Painting程序和Animated Tiles程序有所帮助如下图所示这两个demo讲述了怎么做一个展开动画感兴趣的同学也可以直接参考 有了这两个demo之后就可以开始动工写咱们自己的程序。 二、效果展示 如下两幅图就是作者失效的两个悬浮菜单效果图展示图1代码已上传至CSDN不需要积分即可下载效果图2代码暂时不开源有需要的朋友可以进一步咨询 基础圆形菜单功能代码已上传CSDN - Qt 失效的 PC 端环形菜单、悬浮球菜单、展开动画 高级悬浮球菜单、支持二级菜单打开 三、实现代码 实现文件比较简单只有头文件和实现文件这里先主要放出头文件然后讲解实现思路具体实现细节可以通过下载源码进行具体了解 1、菜单项 PopRingItem为菜单展开项、可以通过绑定外部QAction实现与普通菜单相同功能 class PopRingItem : public QLabel {Q_OBJECTpublic:PopRingItem(QWidget *parent 0);~PopRingItem();void SetRadius(int radius);int GetRadius() const;void BindAction(QAction * action);signals:void MouseEvent(bool);protected:virtual void enterEvent(QEvent * event) override;virtual void leaveEvent(QEvent * event) override;virtual void paintEvent(QPaintEvent * event) override;protected:int m_iRadius 50;QAction * m_actAction nullptr; };2、悬浮球 悬浮球为菜单入口继承自菜单项与菜单项有相似功能 class QVariantAnimation; class QPropertyAnimation; class PopRingMenu : public PopRingItem {Q_OBJECTpublic:PopRingMenu(QWidget *parent 0);~PopRingMenu();signals:void DoubleClicked();public:void SetActions(const QVectorQAction * acts);void SetIcons(const QVectorQString icons);void SetAnimationEnabled(bool enabled);bool IsAnimationEnabled() const;void SetSlowlyFade(bool enabled);bool IsSlowlyFade() const;void SetDistanced(int distance);int GetDistanced() const;void SetStartAngle(int angle);int GetStartAngle() const;void SetStepAngle(int angle);int GetStepAngle() const;void SetNormalMenuSize(int size);int GetNormalMenuSize() const;void SetNormalItemSize(int size);int GetNormalItemSize() const;protected:virtual void enterEvent(QEvent * event) override;virtual void leaveEvent(QEvent * event) override;virtual void mouseDoubleClickEvent(QMouseEvent * event) override;virtual void timerEvent(QTimerEvent * event) override;virtual bool event(QEvent * event) override;private slots:void OnMouseEvent(bool);private:void UpdateActions(int msecond);void ExpandMenu();void CollapseMenu();void SlowlyFade();void QuicklyLighter();bool IsUnderMouse() const;void TryCollapseMenu();void KillHideTimer();private:int m_iDistance 70;int m_iStartAngle 0;int m_iStepAngle 60;int m_iMenuSize 70;int m_iItemSize 60;int m_iTimerID -1;QPropertyAnimation * m_pOpacityAnimation nullptr;QVariantAnimation * m_pItemAnimation nullptr;QVectorPopRingItem * m_items; };3、关键点 初始化动画对象指定动画时长和动画起始、终止值 动画具体实现函数未UpdateAction根据当前动画进度值在动画起始值和终止值所占比例进行计算当前动画时刻菜单项的位置和大小 m_pItemAnimation new QVariantAnimation(this);m_pItemAnimation-setEasingCurve(QEasingCurve::InCubic); m_pItemAnimation-setStartValue(ShowMenuStartValue); m_pItemAnimation-setEndValue(ShowMenuEndValue); m_pItemAnimation-setDuration(ShowMenuDuration);connect(m_pItemAnimation, QVariantAnimation::valueChanged, this, [this](const QVariant v){UpdateActions(v.toInt()); });鼠标进入悬浮球时执行展开动画 void PopRingMenu::ExpandMenu() {if (m_pItemAnimation){if (m_pItemAnimation-state() ! QAbstractAnimation::Running m_pItemAnimation-currentValue().toInt() ! ShowMenuEndValue){m_pItemAnimation-setDirection(QVariantAnimation::Forward);m_pItemAnimation-start();}}else{UpdateActions(ShowMenuEndValue);}KillHideTimer();QuicklyLighter(); }鼠标离开悬浮球时执行收起动画与展开动画相反方向收起动画时有一个细节点那就是鼠标hover在菜单项上时也不能收起 void PopRingMenu::CollapseMenu() {if (false IsUnderMouse()){if (m_pItemAnimation){m_pItemAnimation-setDirection(QVariantAnimation::Backward);m_pItemAnimation-start();}else{UpdateActions(ShowMenuStartValue);}KillHideTimer();SlowlyFade();} }展开和收起动画实现细节根据动画指定帧数按比例进行缩放和移动菜单项 void PopRingMenu::UpdateActions(int msecond) {int curDistance msecond * m_iDistance / ShowMenuEndValue;for (int i 0; i m_items.size(); i){PopRingItem * item m_items.at(i);double radians qDegreesToRadians(m_iStepAngle * i * 1.0 m_iStartAngle);int offx curDistance * qCos(radians);int offy curDistance * qSin(radians);item-move(pos() QPoint(offx, offy));int curSize msecond * m_iItemSize / ShowMenuEndValue;item-SetRadius(curSize);item-setVisible(ShowMenuStartValue ! msecond);};::SetWindowPos(HWND(winId()), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); }悬浮球指定时间未激活时淡出减少对用户视觉冲击 void PopRingMenu::SetSlowlyFade(bool enabled) {if (enabled){if (nullptr m_pOpacityAnimation){m_pOpacityAnimation new QPropertyAnimation(this, opacity);m_pOpacityAnimation-setEasingCurve(QEasingCurve::OutCubic);m_pOpacityAnimation-setStartValue(SlowlyStartValue);m_pOpacityAnimation-setEndValue(SlowLyEndValue);m_pOpacityAnimation-setDuration(SlowlyFadeDuration);}}else{if (m_pOpacityAnimation){delete m_pOpacityAnimation;m_pOpacityAnimation nullptr;}} }
http://www.tj-hxxt.cn/news/135164.html

相关文章:

  • 求个网站或者app肇庆seo排名外包
  • 织梦网站默认密码o2o系统网站建设
  • 东莞网站免费制作html5网站开发框架
  • 网站怎么申请吴忠网络推广怎么做
  • 建设网站的心得网页广告设计培训
  • 北京网页网站设计制作wordpress 模板 破解版
  • 浙江网站建设品牌云南住房与城乡建设厅网站
  • 中国版动漫网站模板台州论坛
  • 上海网站开发运营深圳网站建设toolcat
  • 静态网站模板制作触屏版网站开发
  • 做暧视频网站wordpress 漫画 主题
  • 档案网站的建设方案学it需要什么学历
  • 搜索电商怎么做搜索引擎营销优化诊断训练
  • 徐州建站模板公司微企点做的网站百度搜得到吗
  • 网站备案需要营业执照吗摄影网站怎么做数据库
  • 五屏网站建设平台楚雄 公司 网站
  • 企业网站建设的三个核心问题制作自己的网站多少钱
  • 网站建设合同甲乙双方怎么确定深圳福田在线
  • 在线玩网页游戏h5网站大全wordpress 帖子付费
  • 网站已备案 还不能访问我的网站突然打不开了
  • 环保网站案例佛山网络建设推广
  • 阿里云免费网站爱山东app二维码
  • 网站建设需要准备那些内容网页排版设计欣赏
  • 理财网站如何做推广怎么做自己的品牌网站
  • 成品动漫和视频网站入口js做网站需要那些软件
  • 服务器做的网站怎么使用教程定制设计的网站
  • 运营推广计划怎么写seo优化工作内容做什么
  • 网站页面设计方案工作设计室网站
  • 网页设计与网站建设实训报告网站提供商
  • 网站搭建书籍推荐游戏页面