O AppStudioAppFramework fornece um componente DocumentDialog para selecionar arquivos do armazenamento local do seu dispositivo. Este componente é idêntico em funcionalidade ao componente Qt QuickFileDialog , contendo as mesmas propriedades e métodos, mas usa a caixa de diálogo de seleção de arquivo nativo para todas as plataformas em vez de uma caixa de diálogo de arquivo personalizada no iOS e Android, permitindo uma melhor interação com o sistema operacional.
Procure arquivos com a caixa de diálogo do documento
Para usar o componente DocumentDialog, o único requisito é o método open. Ativar permissões de armazenamento externo também é necessário para dispositivos Android. O exemplo de código a seguir demonstra um uso básico de DocumentDialog, incluindo uma opção para habilitar a permissão de armazenamento se ainda não estiver habilitada e registrar possíveis erros no log do console.
Item {
property bool storagePermissionGranted
Component.onCompleted: {
// Check if storage permission is granted (only required for Android)
storagePermissionGranted = Permission.checkPermission(Permission.PermissionTypeStorage) === Permission.PermissionResultGranted
}
PermissionDialog {
id: permissionDialog
openSettingsWhenDenied: true
permission: PermissionDialog.PermissionDialogTypeStorage
onAccepted: {
documentDialog.open()
console.log("Permission accepted")
}
onRejected: {
console.log("Permission rejected")
}
}
Button {
text: "Select document"
onClicked: {
if (documentDialog.supported) {
if (storagePermissionGranted === false){
permissionDialog.open()
}
else (storagePermissionGranted === true){
documentDialog.open()
}
}
else {
console.log("Not Supported")
}
}
}
DocumentDialog {
id: documentDialog
onAccepted: {
console.log("selected file URL " , fileUrl)
}
onRejected: {
if (status == DocumentDialog.DocumentDialogCancelledByUser) {
// Cancelled By User
}
if (status == DocumentDialog.DocumentDialogPermissionDenied) {
// Permission Denied
}
if (status == DocumentDialog.DocumentDialogNotSupported) {
// Not Supported
}
if (status == DocumentDialog.DocumentDialogFileReadError) {
// File Read Error
}
}
}
}
Propriedades adicionais
O componente DocumentDialog também fornece várias propriedades que podem ser usadas para alterar a aparência e o comportamento da caixa de diálogo resultante. Uma lista completa dessas propriedades pode ser encontrada na referência da API, mas o exemplo de código a seguir adiciona propriedades úteis que podem ser usadas para uma seleção de arquivo mais específica. Especificamente, a propriedade title é usado para dar um título à caixa de diálogo, a propriedade selectMultiple permite que você forneça vários arquivos, e a propriedade nameFilters fornece duas opções de filtro, permitindo a você selecionar qualquer um a partir de todos os arquivos ou somente .jpg ou arquivos .png.
DocumentDialog {
id: doc
title: "Select an image"
selectMultiple: true
nameFilters: [ "Image files (*.jpg *.png)", "All files (*)" ]
onAccepted: {
console.log("selected file path " , filePath)
}
onRejected: {
if (status == DocumentDialog.DocumentDialogCancelledByUser) {
// Cancelled By User
}
if (status == DocumentDialog.DocumentDialogPermissionDenied) {
// Permission Denied
}
if (status == DocumentDialog.DocumentDialogNotSupported) {
// Not Supported
}
if (status == DocumentDialog.DocumentDialogFileReadError) {
// File Read Error
}
}
}
As propriedades selectExisting e selectFolder podem ser usadas para alterar a forma como você interage com os arquivos. Se selectExisting for definido como falso, você pode usar a caixa de diálogo para criar um arquivo em vez de selecionar um existente, e se a propriedade selectFolder for definida como verdadeira, você pode selecionar pastas inteiras em vez de apenas um arquivo.