首页 > 其他 > 详细

UE4笔记-系统对话框相关功能记录和使用方法(打开/保存文件对话框系统对话框等等...)

时间:2020-04-07 19:39:03      阅读:461      评论:0      收藏:0      [点我收藏+]

(当前最新版本4.24)

 

UE4其实是有实现对话框打开保存等的相关的功能的,都在‘DesktopPlatform’ Module中..

但是‘DesktopPlatform’ Module属于Developer模块,是无法打包出ship ping程序包的...

会报错:

  Error:Missing precompiled manifest for ‘DesktopPlatform‘

 

 

所以想在生产环境中使用该模块需要自己整改一下Module的(突然想口吐芬芳~)

 

------------------------------------------------------------------------------------------------

 

整理步骤记录:

在Engine\Source\Developer 找到DesktopPlatform和SlateFileDialogs(DesktopPlatform的依赖,也是属于Developer)文件夹..

然后将其复制粘贴到自己Project(插件里也可以)的Source中..

再修改掉DesktopPlatform和SlateFileDialogs的Module名称并builds装载即可(防止模块重名,不好区分),例如改成DesktopPlatformEx和SlateFileDialogsEx

 需要注意一下Build.cs 的PrivateIncludePaths路径

------------------------------------------------------------------------------------------------

 

DesktopPlatform模块的简单使用示例(打开文件对话框):

FString UCommonBPLibrary::OpenFileDialog()
{
    void* ParentWindowPtr = FSlateApplication::Get().GetActiveTopLevelWindow()->GetNativeWindow()->GetOSWindowHandle();
    IDesktopPlatform* DesktopPlatform = FDesktopPlatformModuleEx::Get();

    FJsonSerializableArray OutFileNames;

    if (DesktopPlatform)
    {

        EFileDialogFlags::Type SelectionFlag = EFileDialogFlags::None; 
        //A value of 0 represents single file selection while a value of 1 represents multiple file selection
        DesktopPlatform->OpenFileDialog( ParentWindowPtr, 
                                         TEXT( "选取一张图片" ), 
                                         TEXT( "/" ), 
                                         TEXT( "" ), 
                                         TEXT( "(Image Files)|*.BMP;*.JPG;*.PNG;*.JPEG;)" ), 
                                         SelectionFlag ,
                                         OutFileNames );

    }


    if (OutFileNames.Num() > 0)
    {
        return FString (OutFileNames[0]);
    }
    else 
    {
        return TEXT("");
    }  
}

TArray<FString> UCommonBPLibrary::OpenFileDialogMultiple()
{
    TArray<FString> ret_arr;

    void* ParentWindowPtr = FSlateApplication::Get().GetActiveTopLevelWindow()->GetNativeWindow()->GetOSWindowHandle();
    IDesktopPlatform* DesktopPlatform = FDesktopPlatformModuleEx::Get();

    FJsonSerializableArray OutFileNames;

    if (DesktopPlatform)
    {
        EFileDialogFlags::Type SelectionFlag = EFileDialogFlags::Multiple;
        //A value of 0 represents single file selection while a value of 1 represents multiple file selection
        DesktopPlatform->OpenFileDialog(ParentWindowPtr,
            TEXT("选取图片"),
            TEXT("/"),
            TEXT(""),
            TEXT("(Image Files)|*.BMP;*.JPG;*.PNG;*.JPEG;)"),
            SelectionFlag,
            OutFileNames);
    }

    for (int i = 0; i < OutFileNames.Num(); i++) 
    {
        ret_arr.Add(FString(OutFileNames[i]));
    }

    return ret_arr;
}

 

UE4笔记-系统对话框相关功能记录和使用方法(打开/保存文件对话框系统对话框等等...)

原文:https://www.cnblogs.com/linqing/p/12654996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!