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;
    }
  • 相关阅读:
    MyEclipse使用总结——MyEclipse10安装SVN插件
    SVN的安装和配置
    Git
    myeclipse 怎么安装与激活
    jQuery
    sql server 2008
    原问题:身份证为什么只有15位
    QTP10破解方法及mgn-mqt82.exe下载
    WARNING [Project: :app] To shrink resources you must also enable ProGuard
    your local changes would be overwritten by merge. commit stash or revert them to proceed. view them
  • 原文地址:https://www.cnblogs.com/linqing/p/12654996.html
Copyright © 2011-2022 走看看