zoukankan      html  css  js  c++  java
  • UE4笔记-系统对话框相关功能记录和使用方法(打开/保存文件对话框系统对话框等等...)

    (当前最新版本4.24)

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

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

    会报错:

      Error:Missing precompiled manifest for 'DesktopPlatform'

     

     

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

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

    整理步骤记录:

    在EngineSourceDeveloper 找到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;
    }
  • 相关阅读:
    Delphi XE4 FireMonkey 开发 IOS APP 发布到 AppStore 最后一步.
    Native iOS Control Delphi XE4
    Delphi XE4 iAD Framework 支持.
    using IOS API with Delphi XE4
    GoF23种设计模式之行为型模式之命令模式
    Android青翼蝠王之ContentProvider
    Android白眉鹰王之BroadcastReceiver
    Android倚天剑之Notification之亮剑IOS
    Android紫衫龙王之Activity
    GoF23种设计模式之行为型模式之访问者模式
  • 原文地址:https://www.cnblogs.com/linqing/p/12654996.html
Copyright © 2011-2022 走看看