标题:Qt 开发自定义圆角窗体支持深色浅色切换
作者:boylebao
日期:2022-03-31 22:36
内容:
辞职一个月,在家肝了一个月,把之前的代码整理了一下。
这个圆角窗体最大的特点:
圆角,所有窗体都可以填充到该窗体中,相当于一个壳。深色/浅色无隙切换,支持自动切换,通过定时获取当前时间来判断,当到晚上6点时就会切换为深色模式。支持双击标题最大化,窗口最大时拖动还原窗口,拖动到顶部时最大化,左右分屏(这些不是调用系统API实现的,自己判断的,所以并不能与系统自带的那么完美) 标题栏按钮,最大、最小、关闭、模式切换按钮都是通过绘制实现的。实现了自定义的对话框,代替了QMessageBox。可以更换不同的肤色,现在的风格是蓝色风,可以配不同的肤色。
关于是否开源,暂不会开源的,仅供大家欣赏与交流 ,谢谢!
#1 [maxlogo 04-01 11:59]
很明显看到圆角下面不是透明的?
#2 回 maxlogo 的帖子 [boylebao 04-01 12:39]
maxlogo:很明显看到圆角下面不是透明的? (2022-04-01 11:59)
因为截图的原因,四个角是桌面背景
#3 [ysu533 04-01 21:18]
巧了,这两天也刚帮同事搞完圆角。 不知道你是怎么实现的,个人感觉还是挺简单的。setMask + mask后的锯齿修复就可以了。
PS:我认为你这些都挺好实现的,就是一点上面你没说的。移动窗口操作是如何适配高分屏启用的(多显示屏,不同缩放系数)。
注意我上面的移动不仅限于鼠标移动。包括直接调用 move 或 setGemotry 函数是否正常。 我一直没搞定这个。
#4 回 ysu533 的帖子 [boylebao 04-01 22:58]
ysu533:巧了,这两天也刚帮同事搞完圆角。 不知道你是怎么实现的,个人感觉还是挺简单的。setMask + mask后的锯齿修复就可以了。
PS:我认为你这些都挺好实现的,就是一点上面你没说的。移动窗口操作是如何适配高分屏启用的(多显示屏,不同缩放系数)。
注意我上面的移动不仅限于鼠标移 .. (2022-04-01 21:18)
圆角,我是利用qss和paintEvent结合实现的,我并没有在高分屏上测试过,不好给意见,至于移动操作,我的最外层还是widget,所以它还是矩形,直接调用move和setGemotry是没问题,你用setMask的方式是不是实现不规则的窗口,所以导致移动窗体不正常呢?
#5 回 boylebao 的帖子 [ysu533 04-02 09:41]
boylebao:圆角,我是利用qss和paintEvent结合实现的,我并没有在高分屏上测试过,不好给意见,至于移动操作,我的最外层还是widget,所以它还是矩形,直接调用move和setGemotry是没问题,你用setMask的方式是不是实现不规则的窗口,所以导致移动窗体不正常呢? (2022-04-01 22:58)
移动和setmask没关系,我指的是开启hidpi支持后,跨屏操作。如果没开hidpi,也没有多屏(且需要缩放系数不一样)当然没问题啊。 您这样实现,加入我左上叫的图标在布局里面是靠近最左上位置的(即距离左上没有任何空隙),那窗体还是圆角吗?如果不是的话,就意味着您这个框架很容易被塞进去的复杂子窗口破坏掉圆角。