FileDialog

继承: ConfirmationDialog < AcceptDialog < Window < Viewport < Item < Object

用于选择文件系统中的文件或目录的对话框。

描述

FileDialog是一个预设对话框,用于选择文件系统中的文件和目录。它支持过滤掩码。FileDialog根据file_mode自动设置其窗口标题。如果要使用自定义标题,请通过将mode_overrides_title设置为false来禁用它。

属性

Access

access

0

String

current_dir

String

current_file

String

current_path

bool

dialog_hide_on_ok

false (overrides AcceptDialog)

FileMode

file_mode

4

String

filename_filter

""

PackedStringArray

filters

PackedStringArray()

bool

mode_overrides_title

true

String

ok_button_text

"Save" (overrides AcceptDialog)

int

option_count

0

String

root_subfolder

""

bool

show_hidden_files

false

Vector2i

size

Vector2i(640, 360) (overrides Window)

String

title

"Save a File" (overrides Window)

bool

use_native_dialog

false

方法

void

add_filter(filter: String, description: String = "")

void

add_option(name: String, values: PackedStringArray, default_value_index: int)

void

clear_filename_filter()

void

clear_filters()

void

deselect_all()

LineEdit

get_line_edit()

int

get_option_default(option: int) const

String

get_option_name(option: int) const

PackedStringArray

get_option_values(option: int) const

Dictionary

get_selected_options() const

VBoxContainer

get_vbox()

void

invalidate()

void

set_option_default(option: int, default_value_index: int)

void

set_option_name(option: int, name: String)

void

set_option_values(option: int, values: PackedStringArray)

主题属性


信号

dir_selected(dir: String) 🔗

当用户选择目录时发出。


file_selected(path: String) 🔗

当用户通过双击或按OK按钮选择文件时发出。


filename_filter_changed(filter: String) 🔗

当文件名过滤器更改时发出。


files_selected(paths: PackedStringArray) 🔗

当用户选择多个文件时发出。


枚举

enum FileMode: 🔗

FileMode FILE_MODE_OPEN_FILE = 0

该对话框允许选择一个且仅选择一个文件。

FileMode FILE_MODE_OPEN_FILES = 1

该对话框允许选择多个文件。

FileMode FILE_MODE_OPEN_DIR = 2

该对话框只允许选择一个目录,不允许选择任何文件。

FileMode FILE_MODE_OPEN_ANY = 3

该对话框允许选择一个文件或目录。

FileMode FILE_MODE_SAVE_FILE = 4

该对话框将在文件存在时发出警告。


enum Access: 🔗

Access ACCESS_RESOURCES = 0

该对话框仅允许访问Resource路径下的文件(res://)。

Access ACCESS_USERDATA = 1

对话框只允许访问用户数据通路下的文件(user://)。

Access ACCESS_FILESYSTEM = 2

该对话框允许访问整个文件系统上的文件。


属性说明

Access access = 0 🔗

文件系统访问范围。请参阅Access常量。

警告:在Web构建中,FileDialog无法访问主机文件系统。在沙盒Linux和macOS环境中,use_native_dialog自动用于允许对主机文件系统的有限访问。


String current_dir 🔗

  • void set_current_dir(value: String)

  • String get_current_dir()

文件对话框的当前工作目录。

注意:对于本机文件对话框,此属性仅被视为提示,可能不受特定操作系统实现的尊重。


String current_file 🔗

  • void set_current_file(value: String)

  • String get_current_file()

文件对话框的当前选定文件。


String current_path 🔗

  • void set_current_path(value: String)

  • String get_current_path()

文件对话框当前选定的文件路径。


FileMode file_mode = 4 🔗

对话框的打开或保存模式,这会影响选择行为。请参阅FileMode


String filename_filter = "" 🔗

  • void set_filename_filter(value: String)

  • String get_filename_filter()

文件名过滤器(不区分大小写)。当设置为非空字符串时,将仅显示包含子字符串的文件。用户可以使用文件对话框顶部的过滤器按钮编辑filename_filter

另请参阅filters,它应该用于限制可以选择的文件类型,而不是由用户设置的filename_filter


PackedStringArray filters = PackedStringArray() 🔗

可用的文件类型过滤器。数组中的每个过滤器字符串的格式应如下:*. png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg。过滤器的描述文本是可选的,可以省略。应始终设置文件扩展名和MIME类型。

注意:嵌入式文件对话框和Windows文件对话框仅支持文件扩展名,而Android、Linux和macOS文件对话框也支持MIME类型。

注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedStringArray


bool mode_overrides_title = true 🔗

  • void set_mode_overrides_title(value: bool)

  • bool is_mode_overriding_title()

如果true,更改file_mode属性将相应地设置窗口标题(例如,将file_mode设置为FILE_MODE_OPEN_FILE将窗口标题更改为“打开文件”)。


int option_count = 0 🔗

  • void set_option_count(value: int)

  • int get_option_count()

对话框中附加的OptionButtonCheckBox的数量。


String root_subfolder = "" 🔗

  • void set_root_subfolder(value: String)

  • String get_root_subfolder()

如果非空,则给定的子文件夹将是此FileDialog的“root”,即用户将无法访问其父目录。

注意:本机文件对话框会忽略此属性。


bool show_hidden_files = false 🔗

  • void set_show_hidden_files(value: bool)

  • bool is_showing_hidden_files()

如果true,对话框将显示隐藏文件。

注意:Android和Linux上的本机文件对话框会忽略此属性。


bool use_native_dialog = false 🔗

  • void set_use_native_dialog(value: bool)

  • bool get_use_native_dialog()

如果true,并且当前DisplayServer支持,则将使用OS本机对话框而不是自定义对话框。

注意:在Android上,仅在使用ACCESS_FILESYSTEM时才支持,对于访问模式ACCESS_RESOURCESACCESS_USERDATA,系统会回退到自定义FileDialog。

注意:在Linux和macOS上,沙盒应用程序总是使用本机对话框来访问主机文件系统。

注意:在macOS上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中打开的文件夹的访问权限。使用OS.get_granted_permissions()获取已保存书签的列表。

注意:本机对话框与基本进程隔离,显示对话框后无法修改文件对话框属性。


方法说明

void add_filter(filter: String, description: String = "") 🔗

将逗号分隔的文件名filter选项添加到FileDialog,并带有可选的description,该选项限制可以选择的文件。

filter的形式应该是"filename.extension",其中文件名和扩展名可以是*以匹配任何字符串。不允许以.开头的过滤器(即空文件名)。

例如,"*. png,*.jpg"filter"Images"description会产生过滤文本"Images(*.png,*.jpg)"。


void add_option(name: String, values: PackedStringArray, default_value_index: int) 🔗

在文件对话框中添加一个附加的OptionButton。如果values为空,则添加一个CheckBox

default_value_index应该是values中值的索引。如果values为空,则应该是1(选中)或0(未选中)。


void clear_filename_filter() 🔗

清除文件名过滤器。


void clear_filters() 🔗

清除对话框中添加的所有过滤器。


void deselect_all() 🔗

清除对话框中所有当前选定的项目。


LineEdit get_line_edit() 🔗

返回所选文件的LineEdit。

警告:这是一个必需的内部节点,删除和释放它可能会导致崩溃。


int get_option_default(option: int) const 🔗

返回带有indexoptionOptionButtonCheckBox的默认值索引。


String get_option_name(option: int) const 🔗

返回带有索引optionOptionButtonCheckBox的名称。


PackedStringArray get_option_values(option: int) const 🔗

返回带有indexoptionOptionButton值数组。


Dictionary get_selected_options() const 🔗

返回一个Dictionary,其中包含附加OptionButtons和/或CheckBoxes的选定值。Dictionary键是名称,值是选定的值索引。


VBoxContainer get_vbox() 🔗

返回对话框的垂直框容器,可以添加自定义控件。

警告:这是一个必需的内部节点,删除和释放它可能会导致崩溃。

注意:本机文件对话框会忽略对该节点的更改,请使用add_option()将自定义元素添加到对话框中。


void invalidate() 🔗

使当前对话框内容列表无效并更新。

注意:此方法对本机文件对话框不做任何事情。


void set_option_default(option: int, default_value_index: int) 🔗

使用indexoption设置OptionButtonCheckBox的默认值索引。


void set_option_name(option: int, name: String) 🔗

使用索引option设置OptionButtonCheckBox的名称。


void set_option_values(option: int, values: PackedStringArray) 🔗

使用indexoption设置OptionButton的选项值。


主题属性说明

Color file_disabled_color = Color(1, 1, 1, 0.25) 🔗

禁用文件的颜色(当FileDialog在打开文件夹模式下使用时)。


Color file_icon_color = Color(1, 1, 1, 1) 🔗

应用于文件图标的颜色调制。


Color folder_icon_color = Color(1, 1, 1, 1) 🔗

应用于文件夹图标的颜色调制。


Texture2D back_folder 🔗

返回箭头的自定义图标。


Texture2D create_folder 🔗

创建文件夹按钮的自定义图标。


Texture2D file 🔗

文件的自定义图标。


Texture2D folder 🔗

文件夹的自定义图标。


Texture2D forward_folder 🔗

向前箭头的自定义图标。


Texture2D parent_folder 🔗

父文件夹箭头的自定义图标。


Texture2D reload 🔗

重新加载按钮的自定义图标。


Texture2D toggle_filename_filter 🔗

文件名过滤器切换按钮的自定义图标。


Texture2D toggle_hidden 🔗

切换隐藏按钮的自定义图标。