Verwendung von Dateiauswahlfeldern mit Qt Quick Controls
File selectors bieten eine bequeme Möglichkeit, Dateivarianten auszuwählen. Qt stellt den Plattformnamen und die Locale als integrierte Selektoren bereit. ` Qt Quick Controls ` erweitert die integrierten Selektoren um den Namen (in Großbuchstaben) des Stils, mit dem eine Anwendung ausgeführt wird.
Durch die Verwendung von Dateiauswahlfunktionen lassen sich stilbezogene Anpassungen vornehmen, ohne eine feste Abhängigkeit von einem Stil zu schaffen. Von den verfügbaren Dateivarianten wird nur die ausgewählte QML-Datei von der QML-Engine geladen. Jede Dateivariante kann den Kontext, d. h. einen bestimmten Stil, annehmen. Dies führt zwar typischerweise zu einer gewissen Code-Duplizierung, vermeidet aber andererseits die zuvor erwähnte feste Abhängigkeit vom Stil und führt zu einfacherem und effizienterem QML-Code.
Das folgende Beispiel zeigt eine benutzerdefinierte, abgerundete Schaltfläche, die im Material-Stil einen gestylten Schlagschatten aufweist und in anderen Stilen flach erscheint. Die Dateien sind so organisiert, dass die Material-Version von „ CustomButton.qml “ im Unterverzeichnis „ +Material “ abgelegt ist.
:/main.qml
:/CustomButton.qml
:/+Material/CustomButton.qmlStandardmäßig verwendet „ main.qml “ „ CustomButton.qml “ für den Typ „ CustomButton “. Wird die Anwendung jedoch mit dem Material-Stil ausgeführt, ist der Selektor „ Material “ vorhanden, und stattdessen wird die Version „ +Material/CustomButton.qml “ verwendet.
// main.qml
import QtQuick
import QtQuick.Controls
ApplicationWindow {
id: window
visible: true
CustomButton {
text: "Button"
anchors.centerIn: parent
}
}Die Basisimplementierung der benutzerdefinierten Schaltfläche ist eine einfache, abgerundete, flache Schaltfläche.
// CustomButton.qml
import QtQuick
import QtQuick.Controls
Button {
id: control
background: Rectangle {
radius: width / 2
implicitWidth: 36
implicitHeight: 36
color: control.pressed ? "#ccc" : "#eee"
}
}Die Implementierung der benutzerdefinierten Schaltfläche im Material-Stil importiert den Material-Stil, fordert ein dunkles Design an, um hellen Text zu erhalten, und erzeugt einen Schlagschatten für den Hintergrund.
// +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
}
}
}Hinweis: Es wird empfohlen, „ QQmlApplicationEngine “ zu verwenden, das intern eine „ QQmlFileSelector “-Instanz erstellt. Dies ist alles, was erforderlich ist, um QML-Dateiselektoren zu nutzen.
Weiterführende Informationen
© 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.