Ich war bereit, FileDialog von QML zu verwenden, aber es stellt sich nicht für SaveAs Situationen (weil Sie nicht einen nicht vorhandenen Dateinamen angeben) und das Gefühl des Dialogs ist nicht wirklich modern oder Handy, Mobiltelefon.Benutzerdefinierte FileDialog in QML
Als Abhilfe Ich habe einen einfachen MyFileDialog zu bauen entschieden, die wie folgt aussieht:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.3
Popup
{
implicitWidth: window.width/3 * 2
implicitHeight: window.height/3 * 2
x: (window.width - width)/2
y: 20
modal: true
focus: true
property alias title: popupLabel.text
contentItem: ColumnLayout
{
id: settingsColumn
spacing: 20
// Popup title.
Label
{
id: popupLabel
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
}
// File path.
TextField
{
id: field
placeholderText: "File path..."
implicitWidth: parent.width
}
// Buttons.
RowLayout
{
spacing: 10
Button
{
id: okButton
text: "Ok"
onClicked: { onOkClicked(); close();}
Material.foreground: Material.primary
Material.background: "transparent"
Material.elevation: 0
Layout.preferredWidth: 0
Layout.fillWidth: true
}
Button
{
id: cancelButton
text: "Cancel"
onClicked: { state = false; }
Material.background: "transparent"
Material.elevation: 0
Layout.preferredWidth: 0
Layout.fillWidth: true
}
}
}
}
Nun mag ich diesen Dialog für mehr Situationen wiederverwendbar sein möge, zum Beispiel um Dateien zu öffnen, Dateien zu importieren, um Dateien zu speichern ... Aber das bedeutet, dass das Verhalten von okButton.onClicked für jede dieser Situationen unterschiedlich ist.
Ich habe verschiedene Möglichkeiten versucht, um ein benutzerdefiniertes (oder veränderbares) Verhalten für okButton.onClicked anzugeben, aber bisher kein Glück. Hier ist, was ich versucht habe:
- Erstellen Sie eine Eigenschaft Alias okButton.onClicked in Popup
- definieren okButton.onClicked, wo ich das Popup verwenden
- ein Verhalten Funktion außerhalb des Popup definieren und stelle es dem Popup zur Verfügung
Keiner dieser Versuche funktionierte und ich habe immer Kompilierungsfehler.
Irgendeine Idee von dem, was ich könnte meinen Code wiederverwendbar machen?
Auch ich konnte kein neues und sauberes Beispiel im Internet finden, irgendeine Idee wo ich das finden könnte?
Danke,
Antoine.
Welche 'FileDialog' redest du da? [Dieser kann als speichern.] (Http://doc.qt.io/qt-5/qml-qtquick-dialogs-filedialog.html#selectExisting-prop) – Mitch
@Mitch, du hast mir wirklich mehrere Stunden gerettet, danke! – arennuit