GUI, введение и список
Перед началом работы приложения, если ты не нацелен на какую-то конкретную систему, необходимо выбрать графический интерфейс пользователя, и программисту предлагается широкий выбор.
Но прежде всего для лямбда-программиста, не связанного с той или иной средой, должен быть учтен факт: будущее программирования не под Windows (или какой-либо другой системой), оно в мобильных и веб-приложениях, работающих на сервере, поэтому следует использовать фреймворк, который может работать на сервере и на мобильном устройстве.
Обычные пользовательский интерфейс на рабочем столе - по модели WIMP. Это аббревиатура Windows, Icon, Menu, Pointing device (Окно, Значок, Меню, Указатель). Принцип разрабатывался с 1973 года компанией Xerox и популяризировался Apple с помощью MacIntosh, а затем Microsoft с Windows 95.
Эту модель ставят под сомнение сенсорные экраны. В случае мобильных устройств существует значительная фрагментация графической среды и интерфейсов, о которой говорится в статье Programming мобильного телефона, от которой можно избавиться только с помощью HTML 5.
Список комплектов инструментов и платформ
Панели инструментов содержат предустановленные компоненты, которые можно использовать непосредственно для создания интерфейса приложения .
Qt
Qt, приобретённый Nokia, а затем Digia, был первоначально использован в KDE-интерфейсе в Linux. Он распространился на все системы и теперь является основой программирования приложений для мобильных устройств компанией Nokia. Набор инструментов, QtClick, предоставляет готовый код. Начиная с версии 5.1 приложения работают также на Android и iOS.
Преимущества
Полный API.
Быстро.
Компоненты OpenGL и WebKit.
Язык интерфейса QML .
Высокая переносимость.
Несколько возможных языков программирования.
Включает 3D-анимацию.
Визуальный интерфейс разработки QtCreator.
Может использоваться на (некоторых) мобильных устройствах.
Хорошая документация.
Неудобства
Очень тяжелый файл для скачивания для пользователя.
Бесплатная лицензия только для проектов с открытым исходным кодом .
JavaFX
Библиотека языка программирования Java включает все компоненты, полезные для интерфейса пользователя. Кроме того, есть JavaFX - GUI для упрощения создания пользовательских интерфейсов. Классы Java можно использовать в приложении в C или PHP.
Преимущества
Полный API для рабочего стола или Интернета.
Несколько инструментов разработки (см. ресурсы).
Переносимость.
GWT-фреймворк от Google для Web (конвертирует Java в JavaScript).
Неудобства
Java довольно сложно использовать вне JavaFX.
Не особенно быстро.
WPF и WinRT
WPF - это уровень графического и аппаратного интерфейса .NET, API которого обеспечивает доступ ко всем службам Windows. WinRT - это время выполнения Windows 8.
Преимущества
Для пользователя нечего загрузить.
Язык интерфейса XAML или HTML 5.
Простое программирование с Visual Studio .
Визуальные средства разработки для различных языков, включая C # и JavaScript .
Минусы.
Работает только в Windows. Порталы WPF под другими системами неполные и для WinRT их нет.
Медленнее на казнь, чем родной.
ГТК
Графический фреймворк Gnome в Linux, носимый под Windows. Наиболее известным приложением для Windows, использующим этот фреймворк, является Gimp, и оно доступно во всех операционных системах. Существует порт GTK для PHP, но не обновляемый с люстрами и требующий изменённой версии runtime. GTK считается менее удобным, чем Qt, с эквивалентными возможностями и более сложным программированием.
Электрон
Для создания локального приложения с веб-технологиями: браузер Chrome для рендеринга, HTML и CSS для описания интерфейса и JavaScript на стороне сервера и интерфейса. Сюда же входит библиотека libuv для доступа к файловой системе и все расширения Node.js . Это абсолютно переносимое и простое решение. Примеры использования можно найти в Advanced Explorer и редакторе кода Advanced Editor на этом сайте.
Аура
Разработана Google для замены GTK, чтобы дать Chrome и ChromeOS портативный фреймворк, в частности, работающий на Linux и Android. Он основан на OpenGL и открывает контекст для каждого окна, а не по вкладкам, чтобы сэкономить ресурсы. Аура, вероятно, нелегко использовать для приложения, потому что она сделана для браузера, но поскольку тенденция заключается в использовании браузера как интерфейса к системе (что делает ChromeOS), эта инфраструктура косвенно универсальна. Можно также утверждать, что ГТК была разработана для Gimp и стала универсальной, Аура могла идти по тому же маршруту .
ImGui
Если ты ищешь очень простую в реализации библиотеку интерфейса для приложения C++, ImGui может быть решением. Код такой же простой, как это:
ImGui::InputText("string", buffer, 128);
для отображения текстового поля ввода и управления его работой. Библиотека содержит функции графики. Она интенсивно использует OpenGL, и это может быть неуместно для некоторых приложений. Это стоимость его минимальной зависимости от других книжных магазинов. ImGui хорошо подходит для игрового интерфейса, полноэкранных приложений.
Читайте также: Нукляр. Сделан в C, он очень легкий, около 15 КБ, но полный .
GuiLite
Простая и экономичная библиотека (около 5KO), написанная на C++, для всех платформ. Для Visual Studio Code существует средство предварительного просмотра интерфейса.
Преимущества
Простота использования.
Различные возможные языки программирования.
Мобильный на столе и мобильные.
Настраиваемый.
Не использует фреймворк для отображения собственных виджетов .
Tcl/Tk
Tcl - язык программирования, а Tk - графический инструментарий, работающий с Tcl или другими языками.
Преимущества
Простота использования.
При необходимости могут использоваться разные языки программирования.
Мобильный.
Неудобства
Tcl - динамичный язык, поэтому медленнее.
Tk предназначен для Tcl .
ФТЛК
Панель инструментов для создания графических интерфейсов в C++.
Преимущества
Портативный (Windows, Linux, Mac и другие).
Легкий.
Поддерживает OpenGL.
Редактор визуальных интерфейсов FLUID .
Неудобства
Менее полные, чем предыдущие альтернативы.
Ограничено языком программирования.
wxWidget
Toolkit для Windows, Linux, Mac на базе GTK, но с использованием собственных виджетов. Используется с разными языками программирования. В силу отсутствия гибкости существуют недостатки. В ноябре 2013 года вышла версия 3.0, первая обновленная с 1998 года! Это доказывает, что проект все еще жив, а последнее обновление датировано 2018 годом .
FOX Toolkit
Панель инструментов для создания интерфейсов C++. Носится под управлением Windows, Linux и других Unix. Может помочь придать Windows внешний вид приложениям под управлением Linux.
SDL
Библиотека для программирования игр, использующая все ресурсы компьютера (видео, звук, устройства), все языки и ОС. Этот портативный фреймворк обеспечивает доступ к OpenGL и устройствам. Язык программирования можно выбрать из нескольких, включая PHP, C++, Java. Для Windows, Linux.
Базовые API
Базовые API - это интерфейс системы, обеспечивающий примитивы для создания библиотеки компонентов.
OpenGL
Портативная графическая библиотека - альтернатива DirectX, обеспечивающая оптимальную производительность. Она взаимодействует с графической картой, и пользователь должен иметь версию для своей графической платы, если она еще не установлена продавцом. Существует интерфейс OpenGL для браузеров, WebGL .
Для создания собственных компонентов можно использовать панель инструментов с библиотеками в этом списке. Это не приблизится к простоте Qt, но будет намного легче.
Кайро
Сначала по имени Xr греческие буквы произносят Чи и Ро, что и дало новое название. API векторной графики. Совместим со многими системами и языками программирования. Это интерфейс между toolkit и OpenGL или DirectX.
WebKit
Движок рендеринга Chrome и Safari также может использоваться непосредственно приложением и показывать HTML 5. В Qt существует компонент WebKit.
Проект Chromium Embedded позволяет вместе с QtWebkit интегрировать браузер в приложение и использовать HTML 5 в качестве языка интерфейса. После этого судовладелец будет отображаться как объект в декорациях. Но более простым решением было бы использование Electron, который делает то же самое и предлагает дополнительный API.
Клаттер
Библиотека функций, поддерживаемая корпорацией Intel и первоначально предназначенная для системы Meego для мобильных ПК, не слишком громоздкая. На самом деле это интерфейс OpenGL, который упрощает его использование. Она имеет инструментальную коробку Mx (так как QT имеет QtClick). Язык программирования - C++ или Python. Сейчас проект связан с Gnome .
DirectX
Интерфейс для аудио- и графических устройств Windows.
Заключение
Видно, что когда фреймворк дает возможность программировать для мобильных, ты попадаешь в круг специальностей, каждая платформа работает под системой одного бренда. В противном случае, когда ты программируешь для рабочего стола, но не специально для Windows, Qt кажется самым полным фреймворком при этом носимым. Лицензия - LGPL. Ещё есть возможность написать собственные компоненты с OpenGL или WebKit, если нужен очень ограниченный интерфейс.
См. список инструментов разработки графического пользовательского интерфейса на странице на EDI и список фреймворков для мобильных устройств .
История и документы
На самом деле изобретение графического интерфейса с мышкой приписывается Дугласу Карлу Энгельбарту перед версией Palto Alto.