Кросс-платформенная библиотека C для приложений с графическим интерфейсом?

Бесплатная, простая в освоении/использовании кросс-платформенная библиотека C для приложений с графическим интерфейсом? Я ищу Qt?

Дополнительный вопрос: могу ли я разрабатывать с помощью указанной библиотеки/инструментария на Mac, а затем перекомпилировать на ПК/Linux?

Супер бонусный вопрос: Ссылка на учебник и/или загрузку указанной библиотеки.

Правда в том, что я сейчас изучаю семейство C (пришедшее из веб-разработки — XHTML/PHP/MySQL), чтобы изучить разработку для iPhone.

Я понимаю, что C — это не C++ или ObjectiveC, но я хочу, чтобы кривая обучения была максимально простой. Не хочу слишком отходить от темы, но я также ищу хорошие книги для начинающих и веб-сайты. Я нашел это до сих пор.

Здесь я пытаюсь убить многих зайцев одним выстрелом. Я не понимаю, что существуют расширения для конкретных платформ, но я постараюсь избегать их для целей переноса. Идея состоит в том, что я хочу написать код на одной машине и просто скомпилировать его трижды. (Mac/Win/Linux) Если Objective C будет компилироваться в Windows и Linux, а также в OS X, то это хорошо. Если я должен использовать C++, это тоже нормально.


person Moshe    schedule 07.01.2010    source источник
comment
Какое отношение программирование GUI рабочего стола имеет к разработке для iPhone? Если вы хотите заниматься разработкой телефонов, программирование графического интерфейса пользователя для настольных компьютеров — это последнее, с чего вы хотите начать.   -  person jmucchiello    schedule 15.06.2010
comment
@jmucchiello - я не сказал «Рабочий стол» и не упомянул iPhone. Хорошо, я упомянул iPhone. Этот вопрос уже немного устарел, но вы правы. Теперь я это знаю.   -  person Moshe    schedule 15.06.2010
comment
Да, я не понял, сколько лет был вопрос, когда я ответил.   -  person jmucchiello    schedule 16.06.2010
comment
@jmucchielo - Нет проблем. Спасибо за Ваш ответ.   -  person Moshe    schedule 16.06.2010
comment
Голосование за закрытие в качестве инструмента рек.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 14.03.2016
comment
Справедливо. Сообщество достаточно изменилось за 6 лет. Я согласен.   -  person Moshe    schedule 14.03.2016


Ответы (9)


Если вы ищете библиотеку C++, то Qt в основном делает то, что вы ищете. за. Если вы хотите придерживаться чистого C, тогда Qt не вариант.

В качестве C-фреймворка вы можете использовать GTK+, он работает в Linux, Windows и OS X.

person sth    schedule 07.01.2010
comment
Итак, что тогда будет работать с c? - person Moshe; 07.01.2010
comment
@ Моше, да, GTK+ написан на C. - person Luca Matteis; 07.01.2010
comment
Разве QT не требует оплаты за коммерческое использование? Не то чтобы он сказал, что это коммерческий продукт, но он говорит о Mac/win/lin и iPhone. - person phkahler; 11.01.2010
comment
@phkahler: Нет, вы можете использовать его как LGPL (так что вы можете использовать его в коммерческих проектах с закрытым исходным кодом, если вы делаете модификации самой библиотеки QT доступными). Существует также коммерческая лицензия, если вы хотите внести изменения в сам QT, которые вы не хотели бы делать доступными по лицензии LGPL. - person sth; 11.01.2010
comment
Поддержка GTK для Mac не очень хороша, если вы не хотите запускать X11, и у этого есть свои недостатки. - person mikerobi; 15.06.2010
comment
Обратите внимание, что gtk+ теперь поддерживает OS X без X11 (я полагаю, что это больше не помечено как экспериментальное, и последняя версия gimp для OS X поставляется с сборкой, отличной от x11), хотя я бы все же, вероятно, настоятельно рекомендовал qt вместо gtk+ для OS X. - person Roman A. Taycher; 30.11.2012
comment
Потратив последние 4 часа на попытки установить GTK+ в Windows, я бы не рекомендовал это делать. Это настоящий кошмар, чтобы запустить это, и даже когда вы это делаете, все равно возникают проблемы, потому что вам нужно скомпилировать это в msys2... - person AntonioCS; 28.10.2015
comment
Работает ли GTK+ с C++? - person Aaron Franke; 27.02.2019
comment
QT не является бесплатным для коммерческого использования - person Webwoman; 17.04.2019
comment
@Webwoman: он доступен в виде библиотеки LGPL (см., например, qt.io/download), поэтому вы можете использовать его бесплатно для любых целей, которые вы хотите. Это включает в себя использование его для коммерческой программы с закрытым исходным кодом, если вы сохраняете саму библиотеку Qt как LGPL. - person sth; 17.04.2019
comment
спасибо за ваш ответ, я видел этот комментарий и, если возможно, хотел бы узнать ваше мнение: quora.com/Can-I-use-the-free-QT-for-c++-commercially, главный комментарий, я знаю, что вы не юрист, это просто в продолжение нашей дискуссии - person Webwoman; 17.04.2019
comment
@Webwoman: я не совсем понимаю логику этого комментария, я не понимаю, почему коммерческая лицензия обязательно будет безопаснее. Подписка на коммерческую лицензию может быть прекращена или условия могут измениться в будущем, и что вы будете делать в этом случае? LGPL является хорошо известной и часто используемой лицензией. Я бы не ожидал, что в нем вдруг возникнут какие-то юридические сюрпризы, которых раньше не замечали. Я предполагаю, что она определенно была проанализирована более тщательно, чем какая-то специальная лицензия Qt. - person sth; 17.04.2019

Взгляните на инструментарий IUP. Он написан в основном на C, а также легко привязывается к Lua.

person RBerteig    schedule 14.06.2010

Другим вариантом является Tk, библиотека с графическим интерфейсом, написанная на C. Она поставляется с Tcl, языком сценариев, также написанным на C. Они были разработаны с нуля для встраивания в программы на C.

person Bryan Oakley    schedule 14.06.2010

Для завершения этого поста Allegro должен быть здесь =)

http://www.talula.demon.co.uk/allegro/ Аллегро Игровая библиотека, имеет множество графических функций и базовую библиотеку графического интерфейса.

И явная (и очень простая) библиотека на основе Allegro с графическим интерфейсом.

http://cgui.sourceforge.net/index.html

Оба мультиплатформенные

person Hernán Eche    schedule 15.06.2010

Одним из вариантов, который я рассматривал, был EFL, так как он довольно быстрый, простой, компактный, но мощный. Я бы порекомендовал погрузиться в Elementary, их самый простой инструментарий с графическим интерфейсом, а затем позже, когда вы освоитесь с ним, перейти к EDJE, который не так прост, но гораздо мощнее.

person MiJyn    schedule 15.03.2013
comment
это действительно работает в Windows? Я пытался установить его, но это слишком громоздко, и даже не уверен, что это возможно прямо сейчас. - person Hrisip; 17.07.2021

Qt — это библиотека C++. Другими кроссплатформенными библиотеками, которые вы можете рассмотреть, являются wxWidgets (C++) и GTK (С).

Все три представленные библиотеки являются полностью кроссплатформенными. Вы также можете взглянуть на Tcl/Tk, но это набор инструментов :).

person Kornel Kisielewicz    schedule 07.01.2010
comment
gtkmm — это C++, поэтому можно сказать, что GTK — это C++. Как и Qt Python, Ruby, php и т. д. При предоставлении привязок трудно выполнить привязку вниз, поэтому C++ не является (удобно) C, поскольку C может (грубо и совершенно несправедливо) рассматриваться как подмножество C++. - person e8johan; 07.01.2010

Взгляните на Ecere SDK. Он предлагает кроссплатформенный набор инструментов для графического интерфейса и дает вам eC, объектно-ориентированный язык, производный от C (со всеми его функциями), который просто отлично подходит для создания графических интерфейсов.

person Jerome    schedule 27.09.2011

Вы отметили вопрос о qt, который является тегом Я следую. Однако вы также спрашиваете о программировании c. .

Если по какой-то странной (или связанной с доменом) причине вы считаете, что должны использовать C, а не C++, то Qt не для вас. Он был разработан с нуля как библиотека C++.

Тем не менее, я настоятельно рекомендую задаться вопросом, почему ваш проект должен быть на C. У C++ есть много преимуществ, и идея о том, что C по своей сути лучше, по большей части является мифом. Точные данные по этому поводу можно найти в Learning C++ as a New Language Бьерна Страуструпа. а>.

Если вы должны придерживаться C, всегда есть GTK. Базовым API GTK+ является C, но существуют также привязки для C++, называемые GTKmm. Я не большой поклонник этого с точки зрения дизайна, но исторически использовал рабочий стол Gnome (по умолчанию в Ubuntu) ... и Google выбрал его для своей версии Chrome для Linux. Так что у него есть доверие и поддержка.

Но обратите внимание, что Ubuntu выбирает Qt5 для реализации своей следующей версии «Unity» на рабочем столе:

https://askubuntu.com/questions/281092/why-is-canonical-choosing-qt-over-gtk-for-unitys-next-generation


EDIT: вы добавили:

Если я должен использовать C++, это тоже нормально.

«Должен» — сильно сказано, но сравнения между C++/Qt и C/GTK практически нет. И последнее становится достоянием истории.

person HostileFork says dont trust SE    schedule 07.01.2010
comment
У вас есть достоверные данные, полученные от кого-то помимо автора языка? Страуструп — наименее объективный из возможных наблюдателей в вопросе C и C++. - person mlibby; 07.01.2010
comment
@мкл. Согласованный. @Hostile Fork: довольно широкое заявление! Все зависит от того, что вы делаете, от используемого компилятора и целевого оборудования. C++ может (но не всегда) привести к подходам, ориентированным на один объект, которые могут ограничить производительность из-за перегрузки кеша. Мы узнали это на собственном горьком опыте в игровой индустрии. - person zebrabox; 07.01.2010
comment
@HostileFork: Вы троллите теги других языков, информируя их о том, что C++ будет лучшей альтернативой C#, Perl, Ruby, Python и Lisp? - person mlibby; 07.01.2010
comment
@mcl: я слежу за тегом #qt, и ОП спросил конкретно о Qt. Думаю, можно сказать НЕТ! Qt — это C++, вам нужен GTK+ и оставьте все как есть, и вы можете ответить так, если хотите. Но я лично не считаю, что GTK так уж хорош, и я бы не хотел, чтобы кто-то избегал Qt, потому что они не нашли время, чтобы подумать, основаны ли их причины использования C вместо C++ на неверных предположениях. Поэтому я включаю некоторое обсуждение этого в свой ответ. - person HostileFork says dont trust SE; 08.01.2010
comment
Помимо того факта, что вы уверены, что не хотите спросить что-то еще? не является ответом, очевидная причина, по которой вам нужен C API, заключается в том, что вы используете не C, а язык, который может взаимодействовать с C, например luajit, terra, D, rust и так далее. Я считаю, что хорошие библиотеки-оболочки редко существуют, и предпочли бы иметь всю мощь собственного C API. - person cib; 30.05.2013

Еще один вариант, хотя и ограниченный и, возможно, некрасивый для некоторых людей: AGUI.

Руководство: http://intron-trans.hu/agui.html

Двоичные файлы Windows: http://intron-trans.hu/agui-bin-mingw-v090b.zip

Исходный код: http://intron-trans.hu/agui-src-v090b.zip< /а>

person LRMAAX    schedule 01.06.2015
comment
Все ваши ссылки битые - person Simon; 25.06.2018
comment
Судя по всему, проекта больше нет. - person LRMAAX; 30.08.2020