Каковы некоторые из "лучших" кросс-платформенных инструментов С++ UI сегодня?

Я пишу высокопроизводительную систему в портативном современном С++. Много STL и Boost. Я хотел бы начать строить некоторые передние концы этой системы. Обычно я предпочитаю использовать неконвертированное решение для пользовательского интерфейса, но это означает, что пользовательский интерфейс с очень высокой производительностью, что означает низкую задержку для ответа на сообщения, большой объем сообщений для сортировки и отображения и т.д. Я написал много пользовательских интерфейсов реального времени в .NET, они выполняют работу довольно хорошо. Однако я действительно хочу, чтобы это была кросс-платформа без трюков (таких как Mono), и она просто работает. Каковы некоторые из лучших вариантов для этого?

EDIT:

Позвольте мне бросить еще один, который я только что вспомнил, JUCE. Бесплатно для некоммерческого использования и кросс-платформенного. Проблема только в том, что разработка контролируется одним человеком, но исходный код доступен.

JUCE

Ответ 1

Хотя я не уверен, что вы подразумеваете под "Tricks", я могу только дать вам эти ссылки. Будет ли это "наилучшим" для вас, чтобы решить.

  • WxWidgets. Бесплатно для коммерческого использования. Старый, но совместимый дизайн API (без исключений, без шаблонов, без RTTI, без использования STL). Он использует собственные виджеты.
  • Qt. Современные рамки. Поддержка SQL для встроенного ECMA script. Включает встроенный Webbrowser. Виджеты являются CSS-объектами и могут быть помещены в трансформируемый холст. Удивительный инструментарий. Это также быстро. Не бесплатно для коммерческого использования, но бесплатно для проектов с открытым исходным кодом.

    • Изменить: с 14 января 2009 года, Nokia объявила, чтобы поставить Qt в LGPL, что делает Qt доступным для коммерческого использования - бесплатно.
  • GtkMM. Связывание С++ с известным gtk + toolkit, используемым в качестве основы GNOME. Бесплатно для коммерческих (но не может связывать статически). Современный С++ API. GUI Toolkit только. Как и Qt, он рисует сами виджеты. Это дает несколько плохой взгляд на Windows (Qt довольно хорошо рисует виджеты). Я не тестировал его, поэтому я не могу сказать вам о производительности.

Есть больше. Но я знаю только тех, кто хорошо рассуждает о них.

Ответ 2

Qt, безусловно, является самой полной, хорошо поддерживаемой кросс-платформенной платформой С++ GUI, существующей сегодня.

Ответ 3

Недавно я изучил почти все упомянутые выше инструментальные средства. Я бы сказал, что Qt на сегодняшний день является наиболее целесообразным набором инструментов для использования. Я говорю "целесообразно", но не "лучше", потому что на самом деле инструментарий не идеален, в общем, нет "идеальных" решений кросс-платформенных проблем.

Вот некоторые из плюсов и минусов Qt 4.5 (aka Qt 2009.01), доступный под LGPL начиная с jan 2009

преимущества:

  • поддерживает множество платформ, наиболее значимые (я предполагаю) Windows, Mac OS X и Linux.
  • выглядит родным (когда-то действительно использующим родной материал под капот) в Windows, Mac OS X и Linux. Он отлично работает на окна. Cocoa поддерживается на Mac OS X, что немаловажно. В Mac OS X, можно сделать интерфейс выглядит почти неотличимый от native Cocoa приложения.
  • он поставляется с действительно отличной кросс-платформенной системой сборки, который может сэкономить массу времени.
  • это полный набор, как говорят некоторые, рамки приложения, а не просто графический интерфейс. например база данных и сети. это даже дает вам webkit.
  • отличная документация. один из лучших наборов документации, можно найти в графических интерфейсах. его даже лучше, чем MSDN и apple ссылки на разработку.
  • все другие распространенные кросс-платформенные вещи.

Недостатки:

  • Это большой. настройка не такая мелочи. обучение занимает немного времени. занимает много дискового пространства.

Ответ 4

Я считаю, что Ultimate ++ (вы можете легко выполнить поиск в Google на основе имени Ultimate ++) очень хорошо. Он сильно использует шаблоны С++, но проблема в том, что он работает только и создает исполняемые файлы для Windows и Linux, а не для Mac OS. У него есть IDE, и его IDE написано с использованием самого Ultimate ++ (проблема с курицей и яйцом). Преимущество использования U ++ по сравнению с .NET и Mono заключается в том, что в результате приложения имеют меньший размер, поскольку никакие рамки не требуются для установки для запуска приложений.

Ответ 5

Вы найдете много межплатформенных графических интерфейсов для С++, но AFAIK Qt - единственный реальный выбор.

Ответ 6

Мне всегда очень нравились wxWidgets.

Относительно ответа на установку его на windows, есть несколько отличных видео на нем... http://blip.tv/file/1068698 и здесь http://wxwidgets.info/video

Ответ 7

Список инструментов С++ GUI можно найти в старом сообщении в блоге, которое я написал. Около половины из них являются кросс-платформой (через "большую тройку" ). Увы, некоторые из них в основном были оставлены.

К сожалению, ни один из них не идет без компромиссов. IMO нет очевидного выбора, когда речь заходит о С++ GUI-библиотеках. Внимательно изучите ваши конкретные требования.

Если у вас нет особого GUI-интерфейса, любой из wxWidgets, Qt, FLTK или Gtkmm, скорее всего, сделает трюк.

Ответ 8

Один из лучших приложений с открытым исходным кодом, который я видел, - Songbird. Это медиа-плеер, подобный iTunes, построенный поверх Modzilla инфраструктура XULRunner.

Ответ 9

Мне нравится wxwidgets в целом, но я в основном использовал его в Linux. Недавно я попробовал установить на Windows XP с g++ и имел b **** времени установки.

Изменить: Чтобы сделать немного более подробно, у меня возникли проблемы с его созданием.

Ответ 10

Вы говорите, что обычно не пишете пользовательский интерфейс на С++, но в этом случае обеспокоены производительностью. Поэтому я Nth рекомендации Qt, поскольку он имеет привязки для других языков, например. PyQt. Ваши виджеты будут быстрыми С++ Qt-виджетами, вы можете сортировать свои сообщения с помощью тонко обернутых собственных Qt-методов и удерживать их вместе с небольшим количеством python/perl/whatever.

Ответ 11

Не забывайте о XVT, он доступен как С++ Object Library и C API. См. Www.XVT.com. Он потерял свой путь в середине 90-х, но все еще поддерживается и продается. Он использует собственные виджеты, где это возможно, а не эмуляцию. Когда он был популярен, он был куплен 19000+ компаниями для коммерческого использования программного обеспечения, и он имеет огромную глубину для его реализации.

и нет, я не работаю для них!

Тони