Можно ли использовать GTK+ с C++?

Я выбираю инструментарий GUI для изучения С++. Я провел некоторый поиск в Интернете, и большинство людей предлагают GTKmm для C++ вместо GTK+. Несмотря на это, я видел несколько приложений на C++, созданных с использованием GTK+.

Поэтому я просто хочу знать конкретные причины этого:
1. Почему GTKmm предпочтительнее для C++?
2. Каковы ограничения, которые я буду столкнуться с тем, что я использую приложения GTK+ для C++ вместо GTKmm?


person phongvcao    schedule 11.04.2011    source источник
comment
На главную страницу есть несколько веских причин.   -  person Josh Lee    schedule 11.04.2011
comment
Спасибо за быстрый ответ! Но способен ли GTK+ на это?   -  person phongvcao    schedule 11.04.2011
comment
Если вы собираетесь изучать инструментарий GUI, я бы скорее порекомендовал Qt. Если нет какой-либо функции GTK, которая вам нужна.   -  person RedX    schedule 13.04.2011
comment
Ну, единственная причина, по которой я предпочитаю GTK+ (или Gtkmm) Qt, заключается в том, что, насколько мне известно, большинство приложений, написанных на Qt, выглядят довольно беспорядочно. Я знаю, что GTK выглядит чужеродным в Windows и архаичным в Mac, но я чувствую, что приложения, использующие GTK, намного понятнее в расположении виджетов по сравнению с приложениями с Qt. Самые понятные приложения Qt, которые я когда-либо видел, — это VLC Media Player и QStardict. Они выглядят лучше, чем большинство других приложений Qt.   -  person phongvcao    schedule 14.04.2011
comment
Однако, поскольку я разрабатываю программное обеспечение только для Windows и Linux, я думаю, что Gtkmm — хороший выбор для меня. Если я собираюсь программировать на Mac, я научусь использовать графический интерфейс, предназначенный для использования на Mac. Хотя Qt можно использовать в OSX, иногда он все равно выглядит очень необычно.   -  person phongvcao    schedule 14.04.2011
comment
Имейте в виду, что, несмотря на рекламу, портирование приложений Gtk на Windows остается серьезной проблемой, и вы найдете мало поддержки или документации по этому вопросу. Настолько, что несколько программ перекочевали с Gtk на Qt: Subsurface, Wireshark, GCompris. Даже Gimp является настоящим испытанием для компиляции в Windows. Это не похоже на Qt, который работает на всех трех основных платформах с очень сильной поддержкой.   -  person Philippe F    schedule 03.12.2019


Ответы (1)


  • gtkmm позволяет вам писать код с использованием обычных методов C++, таких как инкапсуляция, наследование и полиморфизм. Как программист C++, вы, вероятно, уже понимаете, что это приводит к более четкому и лучше организованному коду.
  • gtkmm более безопасен для типов, поэтому компилятор может обнаружить ошибки, которые были бы обнаружены только во время выполнения при использовании C. Такое использование определенных типов также делает API более понятным, поскольку вы можете увидеть, какие типы следует использовать, просто взглянув на метод. декларация.
  • Наследование можно использовать для получения новых виджетов. Создание новых виджетов в коде GTK+ C настолько сложно и подвержено ошибкам, что почти никто из кодеров C не делает этого. Как разработчик C++, вы знаете, что деривация является важной техникой объектно-ориентированного подхода.
  • Можно использовать экземпляры членов, что упрощает управление памятью. Все виджеты GTK+ C обрабатываются с помощью указателей. Как программист C++, вы знаете, что указателей следует избегать, где это возможно.
  • Меньше кода. Объектная модель GTK+ C использует имена функций с префиксом и макросы приведения. Например: gtk_button_set_text(GTK_BUTTON(button), "sometext"); gtkmm C++ код короче и понятнее. Например: button.set_text("sometext");
  • Не нужно беспокоиться о непоследовательной политике подсчета ссылок GTK+.

Источник: http://live.gnome.org/gtkmm/FAQ

person Matt    schedule 11.04.2011
comment
Спасибо! Кажется, я нашел свой ответ! - person phongvcao; 11.04.2011
comment
Что вы подразумеваете под Нет необходимости беспокоиться о непоследовательной политике подсчета ссылок GTK+. ? - person liberforce; 12.04.2011
comment
@liberforce извините, я недостаточно знаком с библиотекой, чтобы знать это, я только что получил эту информацию по упомянутой ссылке. Я предполагаю, что это означает, что они делают свой собственный подсчет ссылок, который работает лучше, чем поведение GTK+ по умолчанию (меньше утечек памяти?). Но я не лучший, чтобы спросить, я просто дал спрашивающему ответ, который он искал. - person Matt; 13.04.2011
comment
о, я не заметил, что это копия/вставка вики GNOME. На самом деле его редактировал Мюррей Камминг, ведущий разработчик GTKmm, так что я полагаю, что он знает свое дело, но я впервые вижу жалобы на это. - person liberforce; 13.04.2011