专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Qt之悬浮球菜单

  一、概述
  最近想做一个炫酷的悬浮式菜单,考虑到菜单展开和美观,所以考虑学习下Qt的动画系统和状态机内容,打开QtCreator的示例教程浏览了下,大致发现教程中2DPainting程序和AnimatedTiles程序有所帮助,如下图所示,这两个demo讲述了怎么做一个展开动画,感兴趣的同学也可以直接参考
  有了这两个demo之后,就可以开始动工写咱们自己的程序。二、效果展示
  如下两幅图就是作者失效的两个悬浮菜单效果图,展示图1代码已上传至CSDN,不需要积分即可下载,效果图2代码暂时不开源,有需要的朋友可以进一步咨询
  基础圆形菜单功能,代码已上传CSDNQt失效的PC端环形菜单、悬浮球菜单、展开动画
  高级悬浮球菜单、支持二级菜单打开
  三、实现代码
  实现文件比较简单,只有头文件和实现文件,这里先主要放出头文件,然后讲解实现思路,具体实现细节可以通过下载源码进行具体了解1、菜单项
  PopRingItem为菜单展开项、可以通过绑定外部QAction实现与普通菜单相同功能classPopRingItem:publicQLabel{QOBJECTpublic:PopRingItem(QWidgetparent0);PopRingItem();voidSetRadius(intradius);intGetRadius()const;voidBindAction(QActionaction);signals:voidMouseEvent(bool);protected:virtualvoidenterEvent(QEventevent)override;virtualvoidleaveEvent(QEventevent)override;virtualvoidpaintEvent(QPaintEventevent)override;protected:intmiRadius50;QActionmactActionnullptr;};2、悬浮球
  悬浮球为菜单入口,继承自菜单项,与菜单项有相似功能classQVariantAnimation;classQPropertyAnimation;classPopRingMenu:publicPopRingItem{QOBJECTpublic:PopRingMenu(QWidgetparent0);PopRingMenu();signals:voidDoubleClicked();public:voidSetActions(constQVectorQActionacts);voidSetIcons(constQVectorQStringicons);voidSetAnimationEnabled(boolenabled);boolIsAnimationEnabled()const;voidSetSlowlyFade(boolenabled);boolIsSlowlyFade()const;voidSetDistanced(intdistance);intGetDistanced()const;voidSetStartAngle(intangle);intGetStartAngle()const;voidSetStepAngle(intangle);intGetStepAngle()const;voidSetNormalMenuSize(intsize);intGetNormalMenuSize()const;voidSetNormalItemSize(intsize);intGetNormalItemSize()const;protected:virtualvoidenterEvent(QEventevent)override;virtualvoidleaveEvent(QEventevent)override;virtualvoidmouseDoubleClickEvent(QMouseEventevent)override;virtualvoidtimerEvent(QTimerEventevent)override;virtualboolevent(QEventevent)override;privateslots:voidOnMouseEvent(bool);private:voidUpdateActions(intmsecond);voidExpandMenu();voidCollapseMenu();voidSlowlyFade();voidQuicklyLighter();boolIsUnderMouse()const;voidTryCollapseMenu();voidKillHideTimer();private:intmiDistance70;intmiStartAngle0;intmiStepAngle60;intmiMenuSize70;intmiItemSize60;intmiTimerID1;QPropertyAnimationmpOpacityAnimationnullptr;QVariantAnimationmpItemAnimationnullptr;QVectorPopRingItemmitems;};3、关键点初始化动画对象,指定动画时长和动画起始、终止值
  动画具体实现函数未UpdateAction,根据当前动画进度值在动画起始值和终止值所占比例,进行计算当前动画时刻菜单项的位置和大小mpItemAnimationnewQVariantAnimation(this);mpItemAnimationsetEasingCurve(QEasingCurve::InCubic);mpItemAnimationsetStartValue(ShowMenuStartValue);mpItemAnimationsetEndValue(ShowMenuEndValue);mpItemAnimationsetDuration(ShowMenuDuration);connect(mpItemAnimation,QVariantAnimation::valueChanged,this,〔this〕(constQVariantv){UpdateActions(v。toInt());});
  鼠标进入悬浮球时,执行展开动画voidPopRingMenu::ExpandMenu(){if(mpItemAnimation){if(mpItemAnimationstate()!QAbstractAnimation::RunningmpItemAnimationcurrentValue()。toInt()!ShowMenuEndValue){mpItemAnimationsetDirection(QVariantAnimation::Forward);mpItemAnimationstart();}}else{UpdateActions(ShowMenuEndValue);}KillHideTimer();QuicklyLighter();}
  鼠标离开悬浮球时,执行收起动画,与展开动画相反方向收起动画时有一个细节点,那就是鼠标hover在菜单项上时,也不能收起voidPopRingMenu::CollapseMenu(){if(falseIsUnderMouse()){if(mpItemAnimation){mpItemAnimationsetDirection(QVariantAnimation::Backward);mpItemAnimationstart();}else{UpdateActions(ShowMenuStartValue);}KillHideTimer();SlowlyFade();}}
  展开和收起动画实现细节,根据动画指定帧数,按比例进行缩放和移动菜单项voidPopRingMenu::UpdateActions(intmsecond){intcurDistancemsecondmiDistanceShowMenuEndValue;for(inti0;imitems。size();i){PopRingItemitemmitems。at(i);doubleradiansqDegreesToRadians(miStepAnglei1。0miStartAngle);intoffxcurDistanceqCos(radians);intoffycurDistanceqSin(radians);itemmove(pos()QPoint(offx,offy));intcurSizemsecondmiItemSizeShowMenuEndValue;itemSetRadius(curSize);itemsetVisible(ShowMenuStartValue!msecond);};::SetWindowPos(HWND(winId()),HWNDTOPMOST,0,0,0,0,SWPNOMOVESWPNOSIZE);}
  悬浮球指定时间未激活时,淡出,减少对用户视觉冲击voidPopRingMenu::SetSlowlyFade(boolenabled){if(enabled){if(nullptrmpOpacityAnimation){mpOpacityAnimationnewQPropertyAnimation(this,opacity);mpOpacityAnimationsetEasingCurve(QEasingCurve::OutCubic);mpOpacityAnimationsetStartValue(SlowlyStartValue);mpOpacityAnimationsetEndValue(SlowLyEndValue);mpOpacityAnimationsetDuration(SlowlyFadeDuration);}}else{if(mpOpacityAnimation){deletempOpacityAnimation;mpOpacityAnimationnullptr;}}}四、相关文章qt之菜单项定制Qt之QAbstractItemView右键菜单Qt弹出式菜单阴影Qt之自定义QLineEdit右键菜单Qt之股票组件自选股列表可以拖拽、右键常用菜单

孙中山为何想定都伊犁?孙中山要成为世界超级强国,伊犁是首选孙中山这个名字大家想必大家都不会陌生。不论是平时的网络上的文章,还是中学课本上,看到的大都是夸赞孙中山先生为中华民族的革命改革鞠躬尽瘁的。而孙中山先生作为中国民主革命行动的引导者,1956年毛人凤去世,多年后死亡内幕公布迷信江湖医生,死状凄惨1949年,伴随着解放战争的胜利,中国人民终于迎来了新民主主义革命的胜利,建立了伟大的新中国。在解放军的打击下,国民党残余势力败退台湾,台湾问题由此形成。以蒋介石为首的台湾国民党当延安时期的伙食究竟如何?虽然艰苦,安排却很周到,甚至有牛奶喝我是棠棣,一枚历史爱好者。欢迎大家关注我,一起谈古论今,纵论天下大势。君子一世,为学交友而已!有饭大家吃,有吃大家饱。这是延安早期流行的一句话,也是那些奔赴延安的知识青年对延安最初淮安。河下古镇江苏淮安古镇河下,曾名北辰镇,当年有108条街巷,44座桥梁102处园林63座牌坊,55座祠庙。明清时代,这里富商的豪宅甲第连云,与扬州盐商的园林相媲美。吴承恩故居明代杰出的文学家林志玲老公身材曝光,腹肌胸肌人鱼线样样不少,网友羡慕极了近日,林志玲老公Akira在社交平台发布了一组现场演出照。照片中Akira半裸上身,搭配白色运动裤,腹肌胸肌人鱼线样样都不少,可谓是魅力十足!面对这样的完美身材,网友们也都纷纷称赞有人出门旅了个游,被1。3万人热议网友说,围观会长寿松弛感最近在朋友圈刷屏。这源于微博网友黑猫白袜子分享的一个故事机场遇到一家人去旅行,行李全在当妈的名下托运。办登机发现小孩证件过期,妈妈直接陪小孩回家了。行李上不了飞机,其他家人很东厂西厂锦衣卫六扇门,明朝四大机构,究竟谁才是老大?在我国两千多年的封建时代,帝王的权力无疑是至高无上的,但是在大臣们和帝王多年的对抗之下,君权也渐渐受到了遏制,帝王无法再想封建时代初期那样毫无顾忌任凭己心的行事。这种现象无疑激起了又一明星违章被拍?谢可寅疑似在禁停道路停车,网友们骂声一片此前有八卦媒体爆出明星马思纯驾车在道路上逆行扔垃圾的行为,引发了网友们的关注,而相关部门也对其做出了处罚。没想到仅仅过去不到一个月又一位明星疑似违规驾车被八卦媒体所拍到。有八卦媒体邱淑贞爱女直接攻占韩国时尚晚宴!网友看懂了原来等级更高邱淑贞爱女沈月再度现身韩国出席时尚晚宴。香港一代性感女星邱淑贞的20岁爱女沈月,继承妈妈的高颜值今年以艺名Ayla展开演艺事业,先前传出她将在韩国出道被一口否认,但却动作频频让人雾消息称苹果iPhone14Plus将配备增强版A15芯片IT之家9月7日消息,就在苹果准备发布iPhone14系列前夕,华尔街日报蒂姆希金斯报道称,低端iPhone14和iPhone14Plus机型将配备上一代A15仿生芯片的增强版,不西媒巴西禁售不配充电器的苹果手机并罚款据埃菲社圣保罗报道,巴西政府从当地时间6日开始禁止苹果公司继续销售不带充电器的苹果手机,并对这家美国公司处以1220万雷亚尔(约合230万美元)的罚款,以赔偿消费者的损失。报道称,
1MOREAero全局空间音频降噪,彻底打破技术垄断空间音频,顾名思义就是在耳机中模拟出在现场聆听的感觉,就算我们转动头部,音源的方向也始终是固定的,如果你是Apple用户,也拥有AirPods,并且使用AppleMusic听音乐,2022年10月份,三大运营商用户数据大比拼,看看有哪些变化?导语2022年10月份,三大运营商用户数据大比拼,看看有哪些变化?一中国移动截止2022年10月份,中国移动的手机客户总数为9。73亿户,本月净增客户数为78。6万户,本年累计净增茂名房地产交易10月报商品房成交面积等5项数据创年内次高近日,茂名市住房和城乡建设局发布茂名市2022年10月房地产交易信息月报,显示在传统银十销售旺季中,房地产交易市场成交规模有所增加。今年10月1日,茂名市明确首套房公积金贷款利率下使用MIDI技术编写音乐编辑器前言本人对乐器一窍不通,但是看到别人能够熟练地吹拉弹奏,总有一种羡慕之情。无奈只略懂一些简谱知识,经过一番学习之后,发现了MIDI这个好东西,可以通过编程来播放自己喜欢的音乐。经过异构集成技术支持下一代无线6G面向未来几代移动通信的技术每十年预示着新一代的移动通信。几代人以来,用户数量急剧增长,每个用户消耗的无线数据量都在不断增加。一开始,我们很高兴能够发送短信今天,我们已经进入了第5代AI绘画行业专题研究技术与应用双突破,生产力变革在即(报告出品方作者浙商证券,谢晨姚逸云)1发展进入快车道,迎来转变为生产力的拐点1。1AI绘画是AIGC重要的应用分支AIGC既是一种内容分类方式,又是一种内容生产方式,还是用于内容从5999元跌至2378元,12GB256GBIP68级防水,高端旗舰售价亲民大家好,我是唐三,随着手机数码行业的高速发展,市面上各种各样的手机都不缺,但不同的消费者之间的购机需求也不尽相同,有人喜欢注重影像拍照的手机,也有人喜欢注重游戏竞技类的手机,更不缺特斯拉紧急召回32万辆大众关停变速器厂威马全员降薪30特斯拉拟在美国召回32。1万辆汽车据路透社当地时间11月19日援引特斯拉公布的一份文件报道,特斯拉将因为车辆尾灯间歇性无法照亮的问题,在美国召回超过32。1万辆汽车。根据特斯拉提交德国新能源困局风一停,电价4天涨2。5倍文观察者网李泽西欧洲工业大国德国,正在回归看天吃饭的古代生活。德国割肉高价收购天然气,将库存满仓,使其电价一度接近俄乌冲突爆发以来的最低点。不过,在过去四天内,德国电价正不断攀升,宁波低调大佬身家565亿,傍上新能源一年翻倍,称特斯拉领先5年新能源可谓是最近几年来最火爆的市场,马斯克更是凭借特斯拉成为了世界首富,引来众多富豪入场新能源市场。其中有一位宁波的富豪身家565亿元,傍上新能源这棵大树后身家一年翻了一番,还称特亚马逊停止授权品牌项目涉及金额过亿!!产品面临滞销亚马逊面向第三方卖家的授权品牌项目即将停止!雨果跨境于上周独家发布此消息之后,引发行业热议及有关部门的关注。部分受此事件影响的亚马逊卖家已向雨果跨境反馈项目进展及诉求。就目前威顿跨
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网