UEC++ 打开资源管理器并返回选中文件路径

声明一个函数,我们利用这个函数来进行打开资源管理器操作

    UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile")
        TArray OpenWindowsFiles();

函数实现:

TArray AActor1::OpenWindowsFiles()
{
    TArray AbsoluteOpenFileNames;//获取的文件绝对路径
    FString ExtensionStr = TEXT("*.*");//文件类型

    IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
    DesktopPlatform->OpenFileDialog(nullptr, TEXT("文件管理器"), FPaths::ConvertRelativePathToFull(FPaths::ProjectDir()), TEXT(""), *ExtensionStr, EFileDialogFlags::None, AbsoluteOpenFileNames);
    return AbsoluteOpenFileNames;

}

然后我们在程序运行的时候调用一次这个函数

void AActor1::BeginPlay()
{
    Super::BeginPlay();
    TArray resStr = OpenWindowsFiles();
    for (int i = 0; i < resStr.Num(); i++) {
        UKismetSystemLibrary::PrintString(this, resStr[i]);
    }
}

查看结果:

UEC++ 打开资源管理器并返回选中文件路径_第1张图片

UEC++ 打开资源管理器并返回选中文件路径_第2张图片

当程序运行就弹出了资源管理器,在选择了mx.sln文件之后,就将该文件的结果打印出来了

OpenFileDialog在UE中的定义:

/** 
     * Opens the "open file" dialog for the platform
     *
     * @param ParentWindowHandle        此对话框的父窗口的本机句柄
     * @param DialogTitle                对话框窗口标题的文本
     * @param DefaultPath                文件对话框最初打开的路径
     * @param DefaultFile                对话框最初将选择的文件
     * @param Flags                      对话的详细信息。看到EFileDialogFlags。
     * @param FileTypes                  要在对话框中显示的类型过滤器。该字符串应该是一个“|”分隔的(描述|扩展列表)对列表。扩展列表用“;”分隔。
     * @param OutFilenames               在对话框中选择的文件名
     * @param OutFilterIndex            对话框中选择的类型
     * @如果成功选择文件,则返回true
     */
    virtual bool OpenFileDialog(const void* ParentWindowHandle, const FString& DialogTitle, const FString& DefaultPath, const FString& DefaultFile, const FString& FileTypes, uint32 Flags, TArray& OutFilenames, int32& outFilterIndex ) = 0;

你可能感兴趣的:(c++,开发语言)