кроссплатформенные диалоги открытия / сохранения файлов - PullRequest
15 голосов
/ 27 мая 2011

Я пишу пользовательский интерфейс для моей программы, используя opengl с SDL в сочетании с Lua и C ++

Теперь мне нужна библиотека, которая позволит мне вызывать функцию, которая предоставляет пользователюдиалог выбора файла для открытия / сохранения файла.Но если ОС предлагает встроенную функциональность для такого диалога, то я хочу использовать этот диалог (например, GetOpenFileName в Window).

Единственные платформы, которые мне нужно поддерживать, это Windows и Linux,Я хочу иметь возможность использовать большую часть кода SDL и openGL, который я уже написал.

Какие варианты доступны?

Ответы [ 4 ]

24 голосов
/ 04 декабря 2014

Вы должны внимательно взглянуть на Native File Dialog .Это небольшая, переносимая библиотека C, которая позволяет использовать диалоги загрузки и сохранения в кросс-платформенной форме, не связывая огромные зависимости, такие как qt или wxWidgets.

Я автор и использую его с SDL2 и OpenGL в Linux, Mac и Windows.

https://github.com/mlabbe/nativefiledialog

12 голосов
/ 05 декабря 2017

tinyfiledialogs предлагает множество модальных диалогов и всплывающих уведомлений (как для графического, так и для консольного режима).это кроссплатформенный файл C (+ заголовок) для добавления в ваш проект C или C ++.Он нацелен на то, чтобы быть чрезвычайно простым в использовании, не имеет НИКАКОГО ИНИЦИАТА, НЕТ ГЛАВНОГО ПЕТЛЯ, НЕТ ВКЛЮЧЕНИЯ и НЕТ СВЯЗИ.Он используется сотнями проектов на github и, конечно, я автор.

7 голосов
/ 27 мая 2011

По моему мнению, wxWidgets - это открытый исходный код , проверенный в бою, зрелый, кросс-платформенный, кросс-язык, бесплатный, с открытым исходным кодом, библиотека GUIПомимо wxWidgets, есть также много других таких межплатформенных библиотек, таких как:

... иПодробнее.

Скорее всего, вы найдете в исходном коде AbiWord.Найдите «FileOpen» внутри каталога src:

./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().


Конечно, как Андре балловво время отрицательного ответа на правильный ответ, есть также Qt, как вы уже знаете.Обратитесь к ответу Раджа для ссылки.

5 голосов
/ 27 мая 2011

https://doc.qt.io/qt-5/qfiledialog.html обеспечивает хорошую абстракцию служб открытия файлов os

...