Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

По-моему, wxWidgets - это открытый исходный код, битва, зрелость, кросс-платформа, кросс-язык, бесплатный, с открытым исходным кодом, Библиотека графического интерфейса пользователя. Помимо 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().


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

Ответ 2

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

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

https://github.com/mlabbe/nativefiledialog

Ответ 3

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