通常我的QML文件以import QtQuick 2.4
和其他导入文件开始。我如何知道哪个是导入模块的最新版本,而不必猜测类型和构建?
你基本上不需要知道。通过导入一个特定的版本,您只需声明您不需要任何可能的新版本的附加功能。这并不意味着如果有更新的版本,您就不会使用——它只是意味着,如果只有比您需要的版本更旧的版本存在,您的代码将拒绝运行。
因此,只有在碰巧使用了新版本的功能(成员、类等)时,才应该更改导入的模块版本。这是所有。您将确切地知道您需要哪个版本,因为您正在使用您在文档中读到的功能。文档将说明它适用于哪个模块版本。
您正在使用的Qt的给定Qt Quick模块的文档将说明这一点-不需要发布说明。
QML模块的版本信息可以在一个名为plugins.qmltypes的文件中找到。这些文件使用JSON来存储信息(据我所知)。在这些文件中,Qt使用"导出"。指定符用于导出模块的名称和版本。
的例子:["QtQuick/Accessible 2.0"]
示例显示了QtQuick的版本。访问模块。的插件。Qmltypes存储在与基级模块同名的目录中。在本例中,这将是QtQuick。基本级模块被分组在一个名为qml的目录下。这就是"通常"。位于一个名为qtx(在某些情况下是Qt)的目录中。其中x是已安装的Qt的主要版本(在我的情况下是qt5)。这意味着插件。Qmltypes的路径如下所示:
/qt5/qml/QtQuick/plugins.qmltypes
我解释这个自下而上的原因是因为其余的路径取决于你如何安装Qt:
Package manager (portage) amd64 install path:
/usr/lib64/qt5/qml/
pip PySide6 install path:
~/.local/lib/python3.9/site-packages/PySide6/Qt/qml/
pip PyQt6 install path:
~/.local/lib/python3.9/site-packages/PyQt6/Qt6/qml
~/.local/lib/python3.9/site-packages/PyQt6/Qt6/qml
Package manager (apt) aarch64 install path:
/usr/lib64/aarch64-{forgot this part}-/qt5/qml/
我用:
批量计算版本grep -r "exports:.*\]" <insert install/OS dependent path>/qml/* | less
这不会捕获分布在多行中的多个导出。
由于QML有两个主要版本,当你有疑问时,你可以导入1.0或2.0版本。