我正在为我的程序编写一个UI,使用opengl和SDL结合使用Lua和C ++
我现在需要的是一些库,它允许我调用一个函数,向用户显示用于打开/保存文件的文件选择对话框。但是如果操作系统为这样的对话框提供原生功能,那么我想使用该对话框(例如Window的GetOpenFileName)。
我需要支持的唯一平台是Windows和Linux,但我希望能够仍然使用大部分SDL和Linux。 openGL代码我已经写过了。
有哪些选择?
答案 0 :(得分:24)
你应该好好看看Native File Dialog。它是一个小型的可移植C库,允许您以跨平台的方式使用加载和保存对话框,而无需链接qt或wxWidgets等巨大的依赖项。
我是作者,我在Linux,Mac和Windows上使用SDL2和OpenGL。
答案 1 :(得分:12)
tinyfiledialogs提供了许多模态对话框和弹出通知(包括图形和控制台模式)。它是一个跨平台的C文件(+标题),可以添加到您的C或C ++项目中。它的目的是非常容易使用,没有INIT,没有主循环,没有包含和没有链接。它被github上的数百个项目使用,当然,我是作者。
答案 2 :(得分:7)
在我看来,wxWidgets是 开源,经过测试,成熟,跨平台,跨语言,免费,开源,GUI库。除了wxWidgets之外,还有许多其他此类跨平台库,例如:
......等等。
您很可能会在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's answer获取链接。
答案 3 :(得分:5)
https://doc.qt.io/qt-5/qfiledialog.html提供了os文件打开服务的良好抽象