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?
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?
正如您自己注意到的那样,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])
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 代码中使用以下组件: