IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

QQmlFileSelector Class

A class for applying a QFileSelector to QML file loading.

This class was introduced in Qt 5.2.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

QQmlFileSelector Class

  • Header: QQmlFileSelector

  • Since: Qt 5.2

  • CMake:

    find_package(Qt6 REQUIRED COMPONENTS Qml)

    target_link_libraries(mytarget PRIVATE Qt6::Qml)

  • qmake: QT += qml

  • Inherits: QObject

Detailed Description

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

It is used as follows:

 
Sélectionnez
QQmlEngine engine;
QQmlFileSelector* selector = new QQmlFileSelector(&engine);

Then you can swap out files like so:

 
Sélectionnez
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.

If a new QQmlFileSelector is set on the engine, the old one will be replaced.

Member Function Documentation

 

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

Creates a new QQmlFileSelector with parent object parent, which includes its own QFileSelector. engine is the QQmlEngine you wish to apply file selectors to. It will also take ownership of the QQmlFileSelector.

[override virtual] QQmlFileSelector::~QQmlFileSelector()

Destroys the QQmlFileSelector object.

[since 5.7] QFileSelector *QQmlFileSelector::selector() const

Returns the QFileSelector instance used by the QQmlFileSelector.

This function was introduced in Qt 5.7.

See Also

See also setSelector()

void QQmlFileSelector::setExtraSelectors(const QStringList &strings)

Adds extra selectors contained in strings to the current QFileSelector being used. Use this when extra selectors are all you need to avoid having to create your own QFileSelector instance.

void QQmlFileSelector::setSelector(QFileSelector *selector)

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

See Also

See also selector()

Obsolete Members for QQmlFileSelector

The following members of class QQmlFileSelector are deprecated. We strongly advise against using them in new code.

Obsolete Member Function Documentation

 
[static] QQmlFileSelector *QQmlFileSelector::get(QQmlEngine *engine)

This function is deprecated since 6.0. We strongly advise against using it in new code.

The file selector should not be accessed after it is set. It may be in use. See below for further details.

Gets the QQmlFileSelector currently active on the target engine.

This method is deprecated. You should not retrieve the files selector from an engine after setting it. It may be in use.

If the engine passed here is a QQmlApplicationEngine that hasn't loaded any QML files, yet, it will be initialized. Any later calls to QQmlApplicationEngine::setExtraFileSelectors() will have no effect.

See Also

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+