Сравнение инструментов разработки GUI для Linux
Я новичок в области проектирования и разработки GUI. У меня есть некоторый опыт, но с Visual Basic.
Я хотел бы разработать достаточно полное (хотя и не самое современное) приложение GUI на linux на основе приложения командной строки. что у меня есть. Сделав некоторый поиск в Google, я обнаружил, что есть в основном три хорошего (или, возможно, это то, что я чувствую) способы достижения этой цели:
- GTK + библиотека с GLADE в качестве дизайнера
- Qt-библиотека с Qtdesigner как конструктор
- Java-свинг с Netbeans
Чтобы обосноваться по одному из вышеперечисленных (или отклонить все из них), я должен был бы знать следующие аспекты каждого элемента в приведенном выше списке. Этими аспектами в порядке убывания их приоритета являются:
- Лицензирование: я бы не смог выложить слишком много баксов здесь...
- Поддержка языка программирования: я знаю C/С++ и очень мало Java.
- Простота обучения/использования
- Гибкость и мощность: было бы очень приятно, если бы большинство (если не все) функций, которые мне нужны, были доступны в основной библиотеке.
- (Отсутствие) дополнительных зависимостей: Рассуждая так же, как и номер 4
- Внешний вид
- Поддерживаемые платформы/переносимость (усилие, необходимое для переключения платформы)
Любые идеи по вышеуказанным темам будут стоить их веса в золоте (я бы не хотел, чтобы через месяц я понял, что я выбрал неправильный инструмент для своей работы). Существуют ли какие-либо другие инструменты, более подходящие для моей цели, о которых я не знаю?
Наибольшую помощь могли бы дать ответы на пустые вопросы.
EDIT: Хорошо, поэтому я, наконец, ушел с Qt. Просто потому, что он легче учиться и выглядит более переносимым, чем GTK + (ко мне, конечно).
Ответы
Ответ 1
Qt - ваш лучший выбор.
Ответ 2
Чтобы сделать это для GTK:
- Лицензия LGPL.
- Написан на языке C, но можно использовать практически любой язык программирования, включая С++, Python, Javascript, Haskell и т.д. Недавно был разработан новый язык программирования Vala, который имеет встроенную поддержку объектов, сигналов и свойств GTK. Его синтаксис очень похож на С#, и его цель - обеспечить очень быструю разработку приложений с использованием GTK. (Это потому, что использование его в исходном C имеет тенденцию создавать очень подробный код.)
- Если вы понимаете объектно-ориентированные принципы (это не обязательно все, кто прошел курс Java в университете), тогда это легко изучить.
- Библиотека разделена на две основные части: GLib, базовую библиотеку и GTK, библиотеку GUI. В GLib есть много функций, которые вам понадобятся для разработки приложений: все виды структур данных, потоки, регулярные выражения, парсер для ключей значений, XML-подобный парсер разметки (для полного XML вам нужна библиотека libxml2), синхронный ввод-вывод, сети. GTK содержит все графические.
- Раньше было, что довольно много приложений имели весь набор библиотек GNOME в качестве зависимости, но это уже не так, поскольку многие полезные функции были перенесены в GLib и GTK. Вы должны иметь возможность писать полнофункциональное приложение без каких-либо дополнительных зависимостей.
- Внешний вид зависит от платформы. В GNOME GTK в основном определяет внешний вид. В Windows естественный внешний вид эмулируется почти идеально. На OS X не так много.
- В Windows и OS X требуется некоторое время, чтобы настроить библиотеки правильно. OS X - это особенно боль в заднице, где у вас есть выбор между запуском сервера X11 или использованием более сложного базового блока Quartz. Qt, вероятно, проще в этом отношении. Тем не менее, ваш код приложения полностью кросс-платформенный и поэтому не требует каких-либо портирования для работы в любой из этих систем.
Надеюсь, я точно представлял вам плюсы и минусы.