Qt自定义控件之浮动操作按钮

12 篇文章 10 订阅

效果

在这里插入图片描述

实现

  实现这个按钮唯一麻烦的点就在于算出N个子按钮弹出的位置。看下图:

在这里插入图片描述

   假设:按钮散落的位置为0到180°,我们有N个按钮,圆心坐标为(x,y),圆心到散落按钮的左上角(topLeft)位置距离为R
  由于我们有N个按钮,散落的总角度为180°,则每个按钮的之间的夹角可以算出为 180 N − 1 ​ \frac{ 180}{ N - 1}​ N1180 ,我们定义为上图的夹角A。
  则我们可以用三角函数轻松得出圆心到子按钮左上角的x轴和y轴的偏移量。分别为夹角A的对边和邻边。
  则第i个按钮的x轴的偏移量为 R * sin( i * A),y轴的偏移量为R * cos(i * A)

不足

  但只按上面这么做,是不太对的。如果要保持圆心和各个子按钮的距离相等,应该计算大圆心到子按钮圆心的距离,而非到按钮的topLeft位置。

代码

  浮动操作按钮在我的 Qt多功能小相册有使用到,代码在文末的github链接上,位于项目的FloatingActionButton文件,需要可以自取。

其它

  更多控件位于Qt自定义控件和模板分享

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值