3

In Qt5 this was easy with using DropShadow.
But in Qt6 the module QtGraphicalEffects is removed.

Is there any trick, workaround or maybe new way in Qt6 to create drop shadow around some component?

4

3 回答 3

6

正如您自己注意到的那样,Qt Graphical Effects删除(肯定)

以下模块已删除,不打算进一步开发。

  • Qt 图形效果
  • [...]

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

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

DropShadow尽管如此,我希望从 git 的 dev 或 Qt 5.15 分支使用它会相对容易。

请注意,它将作为 a 包含Qt5 Compatibility API在 Qt6.1 中。(Qt 6.1 的最终发布原计划于 27.04.2021 [3]

于 2021-02-11T21:00:14.537 回答
2

Qt6 DropShadow

import Qt5Compat.GraphicalEffects
DropShadow {} 
于 2021-09-08T17:33:38.620 回答
0

您可以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 代码中使用以下组件:

  • 亮度对比
  • 着色
  • 颜色叠加
  • 锥形渐变
  • 去饱和
  • 置换
  • 滴影
  • 快速模糊
  • 快速发光
  • 伽玛调整
  • 辉光
  • 色相饱和度
  • 水平调整
  • 线性渐变
  • 不透明蒙版
  • 径向渐变
  • 矩形发光
  • 阈值掩码
于 2022-02-23T10:51:40.917 回答