导入Qt5Compat.GraphicalEffects:找不到QML模块

问题描述 投票:0回答:3

我在 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.

为了解决这个问题,我尝试了一些方法:

  • 使用网站上的安装程序安装了 QT。
  • 通过 pacman 安装了 Qt6/5。
  • 从 AUR 安装了 qt6-5compat 软件包。
  • 从 AUR 安装了 qt6/5-base。
  • 谷歌搜索这个问题。

如何通过导入 Qt5Compat.GraphicalEffects 来解决此问题?

编辑:

我使用 Python 和 PySide6 作为后端代码,但我正在用 QML 编写前端,这就是我遇到问题的地方。

qt qml qt-creator pyside6
3个回答
2
投票

这可能是问题的解决方案。

从主目录“QT”中,您需要获取 Qt5Compad 模块。必须将其添加到开发环境中。

它适用于 Pyside6 和 PyQT6。

这里有一个更好的描述:QT6.4 QML PYTHON 模块“Qt5Compat.GraphicalEffects”未安装


1
投票

您必须记住,PySide2 是 Qt5 的绑定,PySide6 是 Qt6 的绑定。

如果您想将 ColorOverlay 或 DropShadow 与 一起使用,那么您应该遵循 Qt5 文档,其中说明您应该使用

import QtGraphicalEffects 1.15

如果您想在 中使用它,它已将这些组件移至 Qt5Compat 模块,因此您应该使用:

import Qt5Compat.GraphicalEffects

因此导入方式取决于您使用的是 PySide2 (Qt5) 还是 PySide6 (Qt6)。

注意:QtCreator 没有太多功能,因此很多时候它会抛出误报,因为它无法理解 PySide。不幸的是,他们没有给予它“太多的感情”,因此它没有经过优化以与 python 一起获得此类警告。所以只需消除警告即可。


0
投票

我在 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
,问题就解决了我

© www.soinside.com 2019 - 2024. All rights reserved.