QQmlFileSelector Class

用于将QFileSelector 应用于 QML 文件加载的类。更多

头文件: #include <QQmlFileSelector>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
继承: QObject

公共函数

QQmlFileSelector(QQmlEngine *engine, QObject *parent = nullptr)
virtual ~QQmlFileSelector() override
QFileSelector *selector() const
void setExtraSelectors(const QStringList &strings)
void setSelector(QFileSelector *selector)

详细说明

QQmlFileSelector 将自动对 qml 文件和资产路径应用QFileSelector

使用方法如下:

QQmlEngine engine;
QQmlFileSelector* selector = new QQmlFileSelector(&engine);

然后,您可以像这样交换文件:

main.qml
Component.qml
asset.png
+unix/Component.qml
+mac/asset.png

在本例中,main.qml 通常使用 Component.qml 作为 Component 类型。但在 unix 平台上,unix 选择器将出现,并将使用 +unix/Component.qml 版本。请注意,这就像用 +unix/Component.qml 替换 Component.qml,因此在使用 Component.qml 时,无需根据选择的版本更改任何路径。

例如,在所有 main.qml、Component.qml 和 +linux/Component.qml 中传递 "asset.png "文件路径时,只需将其称为 "asset.png "即可。在所有情况下,Mac 平台上的文件路径都将被替换为 +mac/asset.png。

有关可用选择器的列表,请参见QFileSelector

您的平台可能还会提供其他选择器供您使用。根据QFileSelector 的规定,用于选择的目录必须以 "+"字符开头,因此,除非你的项目中有这样的目录名,否则不会意外触发此功能。

如果在引擎上设置了新的 QQmlFileSelector,旧的 QQmlFileSelector 将被替换。

成员函数文档

[explicit] QQmlFileSelector::QQmlFileSelector(QQmlEngine *engine, QObject *parent = nullptr)

创建一个新的 QQmlFileSelector,其父对象为parent ,其中包括自己的QFileSelectorengine 是您希望应用文件选择器的QQmlEngine 。它还将获得 QQmlFileSelector 的所有权。

[override virtual noexcept] QQmlFileSelector::~QQmlFileSelector()

销毁QQmlFileSelector 对象。

[noexcept] QFileSelector *QQmlFileSelector::selector() const

返回QQmlFileSelector 使用的QFileSelector 实例。

另请参见 setSelector()。

void QQmlFileSelector::setExtraSelectors(const QStringList &strings)

strings 中包含的额外选择器添加到当前使用的QFileSelector 中。如果您只需要额外的选择器,而无需创建自己的QFileSelector 实例,请使用此功能。

void QQmlFileSelector::setSelector(QFileSelector *selector)

将供QQmlFileSelector 使用的QFileSelector 实例设置为selectorQQmlFileSelector 不拥有新QFileSelector 的所有权。要重置QQmlFileSelector 以使用其内部QFileSelector 实例,请调用 setSelector(nullptr)。

另请参阅 selector() 。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.