QQmlFileSelector Class

A convenience class for applying a QFileSelector to QML file loading More...

Header: #include <QQmlFileSelector>
qmake: QT += qml
Since: Qt 5.2
Inherits: QQmlAbstractUrlInterceptor.

Public Functions

QQmlFileSelector(QObject * parent = 0)
void setSelector(QFileSelector * selector)

Reimplemented Protected Functions

virtual QUrl intercept(const QUrl & path, DataType type)

Detailed Description

A convenience class for applying a QFileSelector to QML file loading

QQmlFileSelector is a QQmlAbstractUrlInterceptor which will automatically apply a QFileSelector to qml file and asset paths.

It is used as follows:

QQmlEngine engine;
QQmlFileSelector selector;
engine.setUrlInterceptor(&selector);

Then you can swap out files like so:

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

In this example, main.qml will normally use Component.qml for the Component type. However on a unix platform, the unix selector will be present and the +unix/Component.qml version will be used instead. Note that this acts like swapping out Component.qml with +unix/Component.qml, so when using Component.qml you should not need to alter any paths based on which version was selected.

For example, to pass the "asset.png" file path around you would refer to it just as "asset.png" in all of main.qml, Component.qml, and +linux/Component.qml. It will be replaced with +mac/asset.png on Mac platforms in all cases.

For a list of available selectors, see QFileSelector.

Your platform may also provide additional selectors for you to use. As specified by QFileSelector, directories used for selection must start with a '+' character, so you will not accidentally trigger this feature unless you have directories with such names inside your project.

Member Function Documentation

QQmlFileSelector::QQmlFileSelector(QObject * parent = 0)

Creates a new QQmlFileSelector, which includes its own QFileSelector.

QUrl QQmlFileSelector::intercept(const QUrl & path, DataType type) [virtual protected]

void QQmlFileSelector::setSelector(QFileSelector * selector)

Sets a different QFileSelector instance for use by the QQmlFileSelector. QQmlFileSelector does not take ownership of the new QFileSelector. To reset QQmlFileSelector to use its internal QFileSelector instance, call setSelector(0).