Alexey Veselovsky писал(а):
Валерий Лаптев писал(а):
vxWidget
wxWidgets
Ещё можно посмотреть на fltk например и на FOX toolkit.
Но вообще, по моему, выбор прост: либо gtk, либо qt, либо x11.
Поясню почему: если мы хотим чтобы BB смотрелся (и ощущался, что важно!) родным в gnome и подобных, то следует выбрать gtk, если хотим чтобы он смотрелся и ощущался родным в kde, то следует взять Qt.
Если же мы не хотим зависимости от тяжелых плюсато-сишных либ, и хотим нечто максимально простое по исполнению, то следует работать напрямую с X11-протоколом. Возможно в т.ч. написать свою клиентскую либу для работы с ним, благо протокол простой. Кроме того, тут мы получаем максимум гибкости. Т.е. нет ограничений идиомами низлежащих высокоуровневых билиотек, как это будет в случае Qt и Gtk.
Все верно.
Добавлю только несколько комментариев. Я рассматривал все перечисленные варианты.
QtЗамечательная библиотека, очень целостная, «гладкая», если хотите. Объектная модель очень близка к ББ. Отличная подсистема 2D-графики. Что очень важно, есть полноценная реализация MDI-окон. Хорошая build-модель. Имеется полноценный(ая?) binding к FreePascal. LGPL.
Пока из всех тех экспериментов, что я делал - это лучший вариант.
wxWidgetsНа момент начала работы была в наличии свободная лицензия.
Неплохая объектная модель, очень широкая библиотека. Хорошая документация. Качественный open-source продукт. Ожидаем версию 3.0, обещают много изменений.
Имеется binding к Haskell, положенный в основу привязки к ББ. На *nix системах отсутствует MDI (реализуется вкладками).
GTKВывернутая на изнанку модель ООП. Отсутствие MDI. Хотя в целом библиотека богатая.
Написано на C, относительно несложно сделать автоматизированное построение привязки.
X11Заманчивый вариант, но его трудоемкость очень высока, несмотря на кажущуюся простоту. Своя отрисовка, также как, например, в JUCE или AGG – весьма нетривиальная задача.
FLTK, FOX и др.В основном – отсутствует native look & feel и непонятно, как делать привязку.
---
Когда я начинал работу по созданию ГУИ, я допустил большую ошибку.
Я старался делать привязку ко
всей библиотеке, с которой собирался работать. Теперь понимаю, что вполне достаточно тех нескольких функций (классов), которые предоставляются QtPas или часть из wxHaskell, которая была реализована.
К большому сожалению, в настоящее время не могу тратить сколь-нибудь серьезные ресурсы на эту работу, могу лишь сказать, что познакомившись с Qt поближе, считаю, что делать надо именно на Qt. С помощью QtPas получилось создавать окна, виджеты и пр., однако строго без текстов: любое обращение к тексту (установка заголовка, текста элемента или проста работа со строками) приводит к трапу.