如何使用 Qt6 在 QML 中创建 DropShadow 效果?

How to create DropShadow effect in QML with Qt6?

Qt5 中,使用 DropShadow.
很容易 但是在 Qt6 模块 QtGraphicalEffects is removed.

Qt6 中是否有任何技巧、解决方法或新方法可以在某些组件周围创建阴影?

正如您自己注意到的,Qt Graphical Effectsremoved (definitely):

The following modules are removed and not planned to be developed further.

  • Qt Graphical Effects
  • [...]

但是,Qt Graphical Effects 与 Qt6 使用的新 QRhi(Qt 渲染硬件接口)兼容。 [1]

请注意,这并不意味着它会在稍后阶段包含在 Qt 6 中。 [2]

尽管如此,我希望从 git.

的 dev 或 Qt 5.15 分支使用 DropShadow 会相对容易

请注意,它将作为 Qt5 Compatibility API in Qt6.1. (Final release of Qt 6.1 is originally planned for 27.04.2021 [3])

Qt6 DropShadow

import Qt5Compat.GraphicalEffects
DropShadow {} 

您可以手动将 QtGraphicalEffects 模块添加到 Qt6,然后在您的代码中使用 DropShadow

通常,要在 Qt 6 中非正式使用 QtGraphicalEffects,请执行以下操作:

$ git clone git://code.qt.io/qt/qtgraphicaleffects.git
$ cd qtgraphicaleffects/
$ git checkout 59ab3e11433a5157aac0f3af7c0d7fe70a373373 & cd ..
$ ~/Qt/<VERSION>/gcc_64/bin/qmake qtgraphicaleffects
$ make
$ find qtgraphicaleffects/src/effects/ -maxdepth 1 -name \*.qml -exec cp {} qml/QtGraphicalEffects \;
$ cp -r qtgraphicaleffects/src/effects/private/ qml/QtGraphicalEffects
$ cp -r qml/QtGraphicalEffects ~/Qt/<VERSION>/gcc_64/qml/

这将获得尚未从存储库中完全删除的模块源代码。然后将其构建并与所需文件一起复制到Qt安装目录。

所以要使用 DropShadow 组件,添加

import QtGraphicalEffects 1.0

您还可以在 QML 代码中使用以下组件:

  • 亮度对比度
  • 着色
  • 颜色叠加
  • 锥形渐变
  • 去饱和
  • 置换
  • 投影
  • 快速模糊
  • 快速发光
  • 伽马调整
  • 发光
  • 色调饱和度
  • 级别调整
  • 线性渐变
  • 不透明遮罩
  • 径向渐变
  • 矩形发光
  • 阈值掩码