跨平台本机打开/保存文件对话框
cross platform native open/save file dialogs
我正在为我的程序编写一个UI,使用opengl和SDL,结合Lua和C++
我现在需要的是一些库,它将允许我调用一个函数,该函数向用户提供用于打开/保存文件的文件选择对话框。但是,如果操作系统为这样的对话框提供了本机功能,那么我想使用该对话框(例如Window的GetOpenFileName)。
我唯一需要支持的平台是Windows和Linux,但我希望仍然能够使用大部分SDL&我已经编写了openGL代码。
有哪些选项?
tinyfledialogs提供了许多模式对话框和弹出通知(用于图形和控制台模式)。它是一个跨平台的单个C文件(+头),可以添加到您的C或C++项目中。它的目标是非常易于使用,没有init,没有主循环,也没有外部依赖关系。它被GitHub上的数百个项目使用,当然,我是作者。在这里获取:http://tinyfiledialogs.sourceforge.net
用法示例:
char const * selection = tinyfd_openFileDialog( // there is also a wchar_t version
"Select file", // title
"C:\", // optional initial directory
2, // number of filter patterns
lFilterPatterns, // char const * lFilterPatterns[2] = { "*.txt", "*.jpg" };
NULL, // optional filter description
0 // forbid multiple selections
);
tinyfiledialogs将字符字符串处理为UTF-8(在windows和unix上)。在Windows上,它还提供UTF-16/wchar_t功能。
***v3.10(2023):新的FORTRAN模块通过示例***完全实现
***v3.13(2023):新PASCAL单元完全实现,示例***
您应该好好看看Native File Dialog。它是一个小型、可移植的C库,允许您以跨平台的方式使用加载和保存对话框,而无需链接qt或wxWidgets等巨大的依赖项。
我是作者,我在Linux、Mac和Windows上使用SDL2和OpenGL。
https://github.com/mlabbe/nativefiledialog
在我看来,wxWidgets是开源、久经考验、成熟、跨平台、跨语言、免费、开源、GUI库。除了wxWidgets,还有许多其他这样的跨平台库,例如:
- Tk
- FLTK
- 狐狸
- XUL
- AbiWord的跨平台层
等等。
你很可能会在AbiWord源代码中找到你想要的。在src目录中查找"FileOpen":
./af/xap/cocoa/xap_CocoaDlg_FileOpenSaveAs.cpp
./af/xap/cocoa/xap_CocoaDlg_FileOpenSaveAs.h
./af/xap/cocoa/xap_CocoaFileOpen_Views.nib
./af/xap/cocoa/xap_CocoaFileOpen_Views.nib/classes.nib
./af/xap/cocoa/xap_CocoaFileOpen_Views.nib/info.nib
./af/xap/cocoa/xap_CocoaFileOpen_Views.nib/keyedobjects.nib
./af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp
./af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.h
./af/xap/win/xap_Win32Dlg_FileOpenSaveAs.cpp
./af/xap/win/xap_Win32Dlg_FileOpenSaveAs.h
./af/xap/xp/xap_Dlg_FileOpenSaveAs.cpp
./af/xap/xp/xap_Dlg_FileOpenSaveAs.h
Windows版本确实使用了GetOpenFileName()
。
当然,正如Andre在否决一个有效的替代答案时指出的那样,正如你已经知道的,还有Qt。请参阅raj的回答以获取链接。
https://doc.qt.io/qt-5/qfiledialog.html提供了操作系统文件开放服务的良好抽象
我使用了另一个好的库:
https://github.com/samhocevar/portable-file-dialogs
它是一个支持Linux/Mac/Windows 的单头库
我为本机对话框开发了自己的C库。它适用于Windows、macOS和Linux,并提供各种对话框。如果你正是在寻找它的话,它应该能胜任这项工作。单击此处查看存储库。
- 选择文件对话框错误
- 使用文件对话框选择包含特定文件类型的文件夹?
- 用静态版本的QT编译时,文件对话框崩溃
- 如何使用Ifileopendialog打开 *模态 *文件对话框
- 如何使用3d的max 2016 SDK(C++)在插件中添加保存文件对话框?
- 如何将.wav文件保存在MFC中(使用文件对话框)
- 如何为文件对话框过滤器设置通配符
- 从C++打开文件对话框时,JNI内存泄漏
- 打开文件对话框如何选择多个文件而不是文件夹
- 设计模式保存MFC对话框控件状态的步骤
- 带有 wxWidgets 的独立文件对话框窗口
- 如何将文件对话框限制为特定路径
- C ++中的通用文件对话框和公共项目对话框的主要区别是什么?
- 在C++的窗口中打开文件对话框>过滤器不起作用
- 从“打开文件”对话框获取文件夹
- 无法从OSX dylib显示OSX Finder选择文件对话框(QFileDialog::getOpenFileName
- 如何自定义打开/保存文件对话框
- 打开文件对话框后文件写入不工作
- 跨平台本机打开/保存文件对话框
- MFC 保存文件对话框