【问题标题】:Use Qt5Compat.GraphicalEffects in Qt6 and QtGraphicalEffects in Qt5 in the same QML file在同一个 QML 文件中使用 Qt6 中的 Qt5Compat.GraphicalEffects 和 Qt5 中的 QtGraphicalEffects
【发布时间】:2021-12-04 16:27:46
【问题描述】:

我有一个最初用 Qt5 编写的 QML 文件,我正在将它迁移到最新的 QtQuick.Controls 2 版本,并且我也让它与 Qt6 兼容。

我需要继续支持 Qt5,但是当应用程序使用 Qt6 构建时,我找不到导入 Qt5Compat.GraphicalEffects 的方法,而当使用 Qt5 时,我找不到导入 QtGraphicalEffects 的方法。

有什么想法吗?

【问题讨论】:

  • 你在多少个文件中导入了那个模块?如果它在几个模块中,您可以创建 2 个 .qml,其中第一个对 Qt5 有效,另一个对 Qt6 有效,然后根据 Qt 的版本将其包含在 .pro 或 CMakeLists.txt 中。
  • 你的意思是我的组件有两个版本?

标签: qt qml qtquick2 qtquickcontrols2 qt6


【解决方案1】:

不幸的是,QML 没有这样的东西:

#ifdef QT6 
  import Qt5Compat.GraphicalEffects
#else
  import QtGraphicalEffects
#endif

所以我发现最好的选择是使用QQmlFileSelector。它需要两个版本的组件,但您的应用程序不需要知道有两个版本。将自动选择正确的版本。

您可以添加您的选择器(如“qt6”),然后以如下文件结构创建您的 qml 文件:

qml/MyComponent.qml
qml/+qt6/MyComponent.qml

【讨论】:

  • 这太可悲了 :(,我会尝试使用脚本或其他东西从单个版本生成那些 qml 文件
猜你喜欢
  • 1970-01-01
  • 2021-12-12
  • 2021-11-24
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2012-12-07
相关资源
最近更新 更多