LINUX.ORG.RU

[C++] [поиск] Требуется «лёгкая» библиотека для создания GUI на плюсах


0

2

Возникла необходимость оперативно подобрать библиотеку, с помощью которой можно писать не слишком сложные GUI на C++.

Qt - это, конечно, хорошо, но слишком универсально и слишком тяжеловесно. Не хочется тянуть всего этого монстра в относительно небольшой проект.

boost - раньше не пользовался, поэтому знаком плохо. Отсюда вопрос: можно ли из boost выбрать что-нибудь не слишком тяжёлое для GUI? (Конечно, буду копать доки на их сайте, но может быть кто-то уже решал похожую задачу - поделитесь опытом, если не трудно)

cairo - тоже кажется слишком универсальной и тяжеловесной. Подтвердите или опровергните.

fltk - возможно, самый подходящий вариант. Кто имел дело вплотную, тоже скажите своё мнение (лапидарно).

WxWidgets - тоже вроде бы заточено именно под GUI, но кажется тяжеловатой. Смущает немного то, что требует Gtk+ или Motif. Или я не прав?

Из нагугленных вариантов, в которых пока ещё глубоко не ковырялся:

Fox Toolkit и TOAD C++ GUI Class Library - опять же, если кто работал с этими либами, пожалуйста, поделитесь мнениями, впечатлениями и т.п.

PS: Разумеется, если кто-то предложит ещё один вариант, буду весьма благодарен.

PPS: Во время гугления возникли «побочные эффекты» в виде GUI-либ для C. Заинтересовался IUP и MiniGUI. И снова просьба: если кто-то пользовался этими библиотеками, поделитесь своими мнениями о них.

Заранее благодарен всем, кто даст хотя бы кроху полезной информации.

Qt - это, конечно, хорошо, но слишком универсально и слишком тяжеловесно

а никто и не заставляет тянуть весь О_о, QtGui достаточно будет

TERRANZ ★★★★ ()

Qt - это, конечно, хорошо, но слишком универсально и слишком тяжеловесно. Не хочется тянуть всего этого монстра в относительно небольшой проект.

А что, хочется в небольшом проекте велосипеды писать?

Если уж очень не хочется Qt, то можно погрызть кактус с GtkMM.

WxWidgets - УГ по look&feel (как для кодинга - не знаю).

anonymous ()
Ответ на: комментарий от TERRANZ

QtGui достаточно будет

Спасибо. Я с Qt уже лет пять дела не имел, забыл всё нафиг. :) Учту при выборе.

DeVliegendeHollander ★★ ()
Ответ на: комментарий от anonymous

А что, хочется в небольшом проекте велосипеды писать?

В том-то и дело, что очень не хочется. Потому и вопрос возник.

Если уж очень не хочется Qt, то можно погрызть кактус с GtkMM.

Если «кактус», то ну его нафиг. :)

Впрочем, про QtGui мне тут уже «напомнили».

DeVliegendeHollander ★★ ()

Самый лучший выбор — QtGui. По сравнению с остальными не очень и тяжеловесный.

Остальное перечисленное или не является библиотекой интерфейса или является реализацией с сильно устаревшими принципами разработки интерфейса.

Отдельно не советую использовать мелкие наколенные библиотеки, если не сам их писал. В Qt и Gtk уже учтено много неочевидностей и имеется набор заплаток для разных вещей, на которые обязательно наткнешься.

note173 ★★★★★ ()
Ответ на: комментарий от Raving_Zealot

Чего только серьезные компании не используют...

note173 ★★★★★ ()
Ответ на: комментарий от note173

Самый лучший выбор — QtGui. По сравнению с остальными не очень и тяжеловесный.

Да, уже вижу, что большинство голосов именно за этот вариант.

Отдельно не советую использовать мелкие наколенные библиотеки

Вот именно этого и хотелось избежать. В связи с этим вопрос и возник.

если не сам их писал.

И от этого хотелось уйти. Главная задача - взять нормальный инструмент (без лишних заморочек) и использовать его.

DeVliegendeHollander ★★ ()
Ответ на: комментарий от note173

Остальное перечисленное или ... или является реализацией с сильно устаревшими принципами разработки интерфейса.

А вот здесь требуются уточнения, обоснования. Откуда информация? Личный опыт? Ссылки на оценки экспертов, отзывы? Где-то можно узнать конкретные мнения, оценки?

Видишь ли, я более-менее знаком лишь с Qt. И лишь на этом основании мог бы сказать: «Qt рулит, а всё остальное, вспомненное и нагугленное, - говно». Но хочется объективности.

Да, QtGui пока кандидат №1. Тем не менее, на личный опыт использования чего-либо альтернативного пока никто напрямую не сослался.

DeVliegendeHollander ★★ ()
Ответ на: комментарий от DeVliegendeHollander

FLTK, если GUI нужен простой. Тулкит бедный. Поэтому если нужна хорошая функциональность, то Qt.

alex_custov ★★★★★ ()
Ответ на: комментарий от DeVliegendeHollander

Личный опыт. Еще я писал свой gui)

Главное, что мне не нравится и что я считаю абсолютно устаревшим — необходимость привязки размеров к пикселям (или любым другим абсолютным размерам). Второе — неиерархическая организация виджетов. Тут я постоянно привожу пример интерфейсов андроида и ios, где благодаря вложенности элементов можно очень легко использовать готовые системные компоненты со своими настройками, внешним видом и поведением. Всего 5 базовых элементов требуется для интерфейса почти любой программы.

note173 ★★★★★ ()

Используй Qt она не такая тяжелая, если взять только QtCore + QtGui.

m0rph ★★★★★ ()
Ответ на: комментарий от DeVliegendeHollander

Реальных вариантов всего три - qt, wx и gtk. Если планируется писать также под windows, то последний вариант в виде gtk+ отметается.

Но так как ты говоришь, что тебе нужен «не слишком сложный UI», то можешь брать что угодно, даже богом забытые и никому ненужные недоразумения типа fox toolkit. Просто ты попадешь впросак в плане хорошей документации и примеров.

Amp ★★★ ()
Ответ на: комментарий от note173

Извини, но хотелось бы уточнить: всё сказанное тобой (о личном опыте и «я считаю абсолютно устаревшим» и далее по тексту) относится ко всем перечисленным в ОП вариантам? (кроме Qt, конечно)

DeVliegendeHollander ★★ ()

Да, Qt жирноват. И там не только виджеты. Если на поддержку тем пофиг, то можно fox попробовать. Но дизайнера там нет и все виджеты придётся размещать в коде руками.

anonymous ()

И если выбор пал в пользу Qt, то есть смысл подождать 5-ю ветку. 4-я уже практически мертва.

anonymous ()
Ответ на: комментарий от anonymous

И если выбор пал в пользу Qt

Пока ещё нет, хотя отрыв по баллам у Qt огромный. :)

то есть смысл подождать 5-ю ветку. 4-я уже практически мертва.

Да не так важно. Ну в крайнем случае сделаю на Qt4, а потом предложу проапгрейдиться до Qt5. Вот такой я нехороший человек. :)

DeVliegendeHollander ★★ ()
Ответ на: комментарий от DeVliegendeHollander

Из перечисленного я не пользовался fltk. В gtk+, wxwidgets, fox toolkit слишком усложнен процесс создания собственных элементов и использования имеющихся с собственными настройками. В qt тоже не супер, но поудобнее. Обработка событий от интерфейса очень не очевидная. В gtk+ и qt опять же удобнее. Динамический размер элементов делается через костыли.
Все это вполне можно использовать для простого интерфейса, но когда возникает необходимость в большой гибкости и кастомизации, упираешься в саму архитектуру библиотеки, которая закладывалась поколение назад.

note173 ★★★★★ ()
Ответ на: комментарий от Hjorn

Tk.

Да, уже смотрю в сторону cpptk.

А GUI на плюсах писать - это мазохизм.

Да ладно, не утрируй, это ещё не самое худшее. :)

DeVliegendeHollander ★★ ()
Ответ на: комментарий от Gorthauer

Для мелкого гуя разницы никакой, кроме необходимости подключать доп либу widgets

А про QtCore ты забыл?

anonymous ()
Ответ на: комментарий от note173

Спасибо за уточнение.

Обработка событий от интерфейса очень не очевидная. В gtk+ и qt опять же удобнее.

Что верно, то верно. Даже при минимальном опыте использования Qt мне очень понравилась их подсистема «слот-сигнал». Показалась чрезвычайно удобной.

Все это вполне можно использовать для простого интерфейса

А у нас в проекте как раз и будет не слишком сложный интерфейс. Возможное его усложнение пока ещё уточняется, поэтому вполне может случиться так, что Qt станет безальтернативным вариантом.

DeVliegendeHollander ★★ ()

Задачу ты не озвучил. А от этого многое зависит.

Веб-интерфейс не рассматривал как вариант? И очень зря! Ибо сия идея кажется дикой только поначалу. А вот архитектурные плюшки, достающиеся буквально нахаляву...

Macil ★★★★★ ()

По-моему Qt вне конкуренции для С++. Это уже чуть ли не стандарт для GUI на этом языке(и не только на нем). Пожалуй единственное, что мне в нем не нравится - это собственные велосипеды(для контейнеров, например, хотя со строками еще можно понять, но с остальным...). Еще стоит заметить, что Qt - не просто библиотека, в том это не «чистый» С++ - у них своя стадия предкомпиляции ваших исходников(для создания метаинформации и обработки сигналов/слотов) с использованием moc-компилятора.

anonymous ()
Ответ на: комментарий от anonymous

Еще стоит заметить, что Qt - не просто библиотека, в том это не «чистый» С++ - у них своя стадия предкомпиляции ваших исходников(для создания метаинформации и обработки сигналов/слотов) с использованием moc-компилятора.

Это не проблема. Я уже писал здесь, что небольшой опыт использования Qt имеется. Буквально за полчаса всю эту кухню вспомнил. :)

DeVliegendeHollander ★★ ()
Ответ на: комментарий от Macil

Задачу ты не озвучил. А от этого многое зависит.

Я же не решение прошу, а просто поделиться соображениями, мнениями, личным опытом.

Веб-интерфейс не рассматривал как вариант?

А вот этот вопрос не я решаю. И он даже не обсуждается.

Ибо сия идея кажется дикой только поначалу.

Мне не кажется. Если бы только от меня зависело, я бы и такой вариант рассмотрел, но...

DeVliegendeHollander ★★ ()

gtkmm. Может еще cluttermm.

anonymous ()

Qt - это, конечно, хорошо, но слишком универсально и слишком тяжеловесно. Не хочется тянуть всего этого монстра в относительно небольшой проект.

Это не монстр, придется тянуть совсем чуть-чуть, зато куча плюсов. Выбирай Qt. =)

P.S. Напиши мне в джабберы, хочу посоветоваться насчет одного проекта, а ты вроде уже много лет программируешь.

mopsene ★★★ ()
Ответ на: комментарий от frozenix

круто кресты изнасиловали

там всё простое как валенок

jtootf ★★★★★ ()
Ответ на: комментарий от mopsene

А вот мне кажется, что Qt для крестов тянет за собой наследие еще того периода, когда С++ был плохо(относительно) развит и стандартизован(отсюда и велосипеды и moc). gtkmm в этом смысле гораздо мощнее и «плюсовее». И без всяких надстроек над языком.

anonymous ()
Ответ на: комментарий от anonymous

Qt для крестов тянет за собой наследие еще того периода

Тянет, но moc предоставляет средства которых в современном С++ нет, например, рефлексии (пусть и ограниченной).

Begemoth ★★★★★ ()
Ответ на: комментарий от Begemoth

Если архитектура опирается на поддержку рефлексии языком, то это плохая, негодная архитектура. И архитектор такой же.

anonymous ()
Ответ на: комментарий от Begemoth

Мне кажется, что если вам нужна рефлексия, то С++ изначально не лучший выбор.

anonymous ()

C++ биндинг к EFL кто-нибудь предлагал?

O02eg ★★★★★ ()

Зависит от требований.

Мое IMHO, всё зависит от требований к UI: - FLTK: если нужено написать какую-нибудь простенькую, кроссплатформенную тулзу, от UI-я никаких наворотов не требуется и хочется, чтобы это был маленький статически слинкованный бинарник.

- Qt: если нужно полноценное десктопное приложение. В этом случае также настоятельно советую посмотреть в сторону QML.

- CLutter/Mx: OpenGL/OpenGL ES based. Неплох для мультимедийного приложения с продвинутыми визуальными эффектами. Хорошая интерграция c GStreamer, возможность скриптовать UI на Json, CSS для описания стилей. Еще из плюсов - автоматическая интроспекция благодаря Gir, можно писать UI на JavaScript, Python, Ruby, OCaml, Haskell, Smalltalk и т.д. не заморачиваясь с биндингами. Есть интеграция с Qt.

sigsegv ()
Ответ на: комментарий от anonymous

Gtkmm действительно «плюсовее» Qt, однако на практике Qt не доставляет проблем своей «неплюсовостью». А сейчас все Qt-велосипеды совместимы со стандартной библиотекой, а синтаксический сахар и moc-компилятор не доставляют реальных проблем. Gtkmm мне не понравился. Он менее гибок, что ли... Возможно, что как раз из-за своей приплюснутости... На практике нужно решать реальные задачи, а не «наслаждаться» тем, что вы следуете духу языка(тем более, что речь о С++).

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.