Научный консалтинг
Главная
Контакты
Номер телефона
Как мы работаем
Гарантии
Условия
Цены

Последнее обновление:

Какую библиотеку для GUI выбрать?...

Небольшие заметки о графических библиотеках для интерфейсов пользователя (GUI): о легкости освоения и тестирования

Для создания GUI необходимо использовать ту или иную графическую библиотеку. Их, на самом деле, в настоящее время очень много, причем, кроссплатформенных. Ниже приводится лишь небольшой перечень:

Примеры можно продолжать. Вот здесь производится сравнение некоторых графических библиотек по функциональности и особенностям.

Какую библиотеку выбрать для создания GUI?

Вопрос, на самом деле, не риторический, а довольно сложный. Ибо, с одной стороны, есть Qt, GTK, которые являются очень мощными библиотеками. Та же Qt, на самом деле, уже даже не библиотека, а полноценный фреймворк, со своим синтаксисом и дополнительными возможностями. А есть и Nuklear, которая (как утверждают разработчики) написана на С и практически не требует исталляции, необходимо лишь включить ее заголовочный файл в программу, разместить в соответствующем каталоге и… можно создавать графический интерфейс.

Впрочем, на практике дела обстоят несколько скорректированным образом, если можно так выразиться. Автор этой статьи тестировал несколько библиотек из списка выше. Результаты, хотя и субъективные, но, тем не менее, приведены ниже в таблице. Тестирование проводилось в Linux Ubuntu 16.04 LTS. Отметим, что эти библиотеки заявляются как кроссплатформенные.

Библиотека Результат, впечатление от работы с ней
SFML Больше подходит для игр, чем для GUI. Нагружает процессор даже на простых программах типа «крестики-нолики». Простых рабочих примеров GUI в интернете НЕТ.
wxWidgets Устанавливается долго (почти как сама Ubuntu). Протестирован ряд простых примеров GUI, имеющихся в интернете, но все они фактически не работают: появляется лишь окно с надписями, а вот кнопок нет вообще. Документация плохая, нет полноценно работающих, полностью готовых простых примеров.
FLTK Работает в самом деле быстро, полноценно и не нагружает процессор. До сих пор не полностью поддерживается кодировка UTF-8, причем разработчик не планирует сделать такую поддержку. Документация - хорошая, но не для новичков: к сожалению, нет детального разъяснения особенностей. Вместе с библиотекой есть ряд примеров, но они не покрывают всего функционала библиотеки.
Nuklear, IUP Имеющиеся в сети «примеры» (даже простейшие), в том числе и на Github, даже не компилируются, выдаются ошибки. Протестировать не удалось. Документация отвратительная (особенно для Nuklear).
Qt, GTK+ Простые примеры меню (при динамической компиляции) заработали сразу, проблем не наблюдалось. Много хорошей документации.

Конечно, здесь можно привести и контрдоводы. Та же wxWidgets, к примеру, вполне успешно функционирует в ряде программных продуктов. Наиболее известный из них – это FileZilla (клиент FTP). Хотя, чтобы сделать в этой библиотеке, скажем, полноценное отображение кириллицы – придется искать ответы на форумах, в документации эта «мелочь» не отображена. Так что – на любителя.

Сравнив эти (хотя и субъективные) результаты первичного знакомства с графическими библиотеками с их официальными особенностями (см. ссылку выше), какой можно сделать вывод? Что, все-таки, наиболее универсальными, функциональными, легкими в освоении и установке являются… все те же Qt/GTK+. Что же касается библиотек от не столь известных («независимых») производителей, то их качество, увы, недостаточно. Может, потому-то они и не столь известны? Хотя, многие из них (за исключением Nuklear) сделаны достаточно давно. Что же касается IUP, то надо отметить, что даже личное обращение автора статьи к ее разработчику, с целью ознакомления хоть с какими-то полностью работоспособными простыми примерами GUI не дало никакого результата: разработчик лишь дал общие ссылки на уже известные веб-страницы, упомянув, что там есть ряд примеров и документации. Т.е. разработчик библиотеки IUP, по всей видимости, не особенно стремится к ее популяризации, в отличие, к примеру, от разработчиков FLTK: у последних в Google-группах есть тема - обсуждение, где они РЕАЛЬНО помогают осваивать эту библиотеку, обсуждают с пользователями ее баги. Это вселяет надежду: возможно, в будущем эта библиотека будет гораздо более популярной. Пока же в русскоязычном сегменте интернета она практически никак не представлена.

Если же говорить о Qt, то она имеет недостаток: статически скомпилированный исполняемый файл занимает от нескольких мегабайт даже для простейшего приложения типа Hello World. А мало-мальски серьезное приложение может занимать 10, 20 МБ и более – только за счет GUI. Да, несмотря на то, что, как сейчас выражаются, "время пятидюймовых дискет безвозвратно ушло", тем не менее, разработка GUI объемом от 10 МБ для небольшой программы объемом 100...200 кБ видится даже не оплошностью, а просто-напросто некорректным стилем программирования. Это примерно как если бы вес автомобиля составлял 100 кг, а вес его приборной панели - 10 тонн и более. Глупость? Разумеется. Даже с учетом того, что такую "приборную панель" можно использовать для подавляющего большинства автомобилей.

Кроме того, на наш взгляд, Qt содержит в себе массу лишней, ненужной функциональности, фактически подменяя собой языки С/С++. Впрочем, кому-то кажется, что эта функциональность "упрощает" процесс программирования. С чем автор настоящей статьи категорически не согласен: скорее, не упрощает, а даже усложняет, ибо обуславливает необходимость изучения и использовнаия ее синтаксиса, который несколько отличается от синтаксиса С/С++.

Что в итоге?

Так что, окончательный вывод, все-таки, в пользу библиотек Qt/GTK. Новичкам будет гораздо проще ознакомиться именно с этими библиотеками, чем с другими вышеперечисленными. Ну, а если понадобится делать GUI, скажем, для Android, то Qt будет, пожалуй, единственно возможным вариантом. Возможно, именно это обстоятельство и обусловило широкое распространение этой библиотеки, в том числе и в русскоязычном сегменте интернета. Ну, и еще, быть может, wxWidgets. Что касается всех остальные перечисленных выше библиотек - будем напряженно ждать, когда же их разработчики, наконец, обеспечат качественную и, главное, ДЕТАЛЬНУЮ документацию и наличие простейших, простых и сложных ПОЛНОСТЬЮ РАБОТОСПОСОБНЫХ примеров GUI. Когда же у них появится ясное, недвумысленное руководство по установке библиотек в разные операционные системы (как минимум, Linux, Windows, MacOS).


Комментарии:
proger26.05.2019 20:14
А OpenGL?
Алексей28.08.2019 14:42РедактироватьУдалить
Да их много, разных GUI-библиотек, вот примеры: https://en.wikipedia.org/wiki/List_of_platform-independent_GUI_libraries
Всего комментариев: 2
Пожалуйста, не забудьте ознакомиться с правилами оставления комментариев.



Подписаться на комментарии на этой странице

Мы можем выполнить

Другие услуги
Интересная и полезная
информация