Sur cette page

Utilisation de sélecteurs de fichiers avec les contrôles Qt Quick

File selectors offrent un moyen pratique de sélectionner des variantes de fichiers. Qt propose le nom de la plate-forme et la locale comme sélecteurs intégrés. Qt Quick Controls étend les sélecteurs intégrés avec le nom (en majuscules) du style avec lequel une application est exécutée.

L'utilisation de sélecteurs de fichiers permet d'apporter des modifications spécifiques à un style sans créer de dépendance absolue à l'égard de ce style. Parmi les variantes de fichiers disponibles, seul le fichier QML sélectionné est chargé par le moteur QML. Chaque variante de fichier peut assumer le contexte, c'est-à-dire un style spécifique. Cela conduit généralement à une certaine duplication du code, mais d'un autre côté, cela réduit la dépendance au style mentionnée ci-dessus, et conduit à un code QML plus simple et plus efficace.

L'exemple suivant montre un bouton arrondi personnalisé qui a une ombre portée stylisée dans le style Material, et qui semble plat dans les autres styles. Les fichiers sont organisés de manière à ce que la version Material de CustomButton.qml soit placée dans un sous-répertoire +Material.

:/main.qml
:/CustomButton.qml
:/+Material/CustomButton.qml

Par défaut, main.qml utilise CustomButton.qml pour le type CustomButton. Cependant, lorsque l'application est exécutée avec le style Material, le sélecteur Material sera présent et la version +Material/CustomButton.qml sera utilisée à la place.

// main.qml
import QtQuick
import QtQuick.Controls

ApplicationWindow {
    id: window
    visible: true

    CustomButton {
        text: "Button"
        anchors.centerIn: parent
    }
}

L'implémentation de base du bouton personnalisé est un simple bouton plat arrondi.

// CustomButton.qml
import QtQuick
import QtQuick.Controls

Button {
    id: control

    background: Rectangle {
        radius: width / 2
        implicitWidth: 36
        implicitHeight: 36
        color: control.pressed ? "#ccc" : "#eee"
    }
}

L'implémentation du bouton personnalisé dans le style Material importe le style Material, demande un thème sombre pour obtenir un texte clair et crée une ombre portée pour l'arrière-plan.

// +Material/CustomButton.qml
import QtQuick
import QtQuick.Effects
import QtQuick.Controls
import QtQuick.Controls.Material

Button {
    id: control

    Material.theme: Material.Dark

    background: Rectangle {
        implicitWidth: 48
        implicitHeight: 48
        color: Material.accentColor
        radius: width / 2

        layer.enabled: control.enabled
        layer.effect: MultiEffect {
            shadowEnabled: true
            shadowHorizontalOffset: 3
            shadowVerticalOffset: 3
            shadowColor: Material.dropShadowColor
            shadowBlur: control.pressed ? 0.8 : 0.4
        }
    }
}

Remarque : il est recommandé d'utiliser QQmlApplicationEngine, qui crée en interne une instance QQmlFileSelector. C'est tout ce qui est nécessaire pour utiliser les sélecteurs de fichiers QML.

© 2026 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.