我在 Arch Linux 上,我尝试在我的项目中使用 PySide6 和 QT6,因为我需要能够使用单例 qml 对象,而 PySide2 似乎不支持单例 qml 对象的注册。我的项目使用 ColorOverlays 和 DropShadows,因此我需要 GraphicalEffects 支持。但是,根据文档页面,Qt6 不支持这些,需要兼容模块 Qt5Compat.GraphicalEffects 才能支持。
我正在尝试通过下面的导入语句将 Qt5Compat.GraphicalEffects 导入到我的 QML 代码中:
import Qt5Compat.GraphicalEffects
但是,当我将其添加到 QT Creator 中项目的 QML 中时,我收到错误:“
QML module not found.
”
为了解决这个问题,我尝试了一些方法:
如何通过导入 Qt5Compat.GraphicalEffects 来解决此问题?
编辑:
我使用 Python 和 PySide6 作为后端代码,但我正在用 QML 编写前端,这就是我遇到问题的地方。
这可能是问题的解决方案。
从主目录“QT”中,您需要获取 Qt5Compad 模块。必须将其添加到开发环境中。
它适用于 Pyside6 和 PyQT6。
这里有一个更好的描述:QT6.4 QML PYTHON 模块“Qt5Compat.GraphicalEffects”未安装
您必须记住,PySide2 是 Qt5 的绑定,PySide6 是 Qt6 的绑定。
如果您想将 ColorOverlay 或 DropShadow 与 pyside2 一起使用,那么您应该遵循 Qt5 文档,其中说明您应该使用
import QtGraphicalEffects 1.15
。
如果您想在 pyside6 中使用它,它已将这些组件移至 Qt5Compat 模块,因此您应该使用:
import Qt5Compat.GraphicalEffects
。
因此导入方式取决于您使用的是 PySide2 (Qt5) 还是 PySide6 (Qt6)。
注意:QtCreator 没有太多功能,因此很多时候它会抛出误报,因为它无法理解 PySide。不幸的是,他们没有给予它“太多的感情”,因此它没有经过优化以与 python 一起获得此类警告。所以只需消除警告即可。
我在 Pyside6.6.1 中找到了该问题的根源,Pyside6 确实附带了 Qt5Compat 模块,问题是在我的情况下,在 QtCreator 使用的路径中找不到它:
C:\Qt\6.6.1\mingw_64\qml
,我在该链接没有 Qt5Compat ,但是,我在这里找到了它:
<your_project_name>\venv\Lib\site-packages\PySide6\qml
├── Qt
├── Qt3D
├── Qt5Compat
│ └── GraphicalEffects // found it !!
...
所以我所做的就是将其复制到
C:\Qt\6.6.1\mingw_64\qml
,问题就解决了我