Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Программирование с использованием gtkmm 3. Введение

Оригинал: Programming with gtkmm 3
Авторы: Murray Cumming, Bernhard Rieder, Jonathon Jongsma, Ole Laursen, Marko Anastasov, Daniel Elstner, Chris Vine, David King, Pedro Ferreira, Kjell Ahlstedt
Дата публикации: 15 Октября 2013 г.
Перевод: А.Панин
Дата перевода: 5 марта 2014 г.

Авторы

Murray Cumming
Bernhard Rieder
Jonathon Jongsma
Ole Laursen
Marko Anastasov
Daniel Elstner
Chris Vine
David King
Pedro Ferreira
Kjell Ahlstedt

Авторские права

Copyright © 2002,2003,2004,2005,2006.2007,2008,2009,2010 Murray Cumming

Условия использования

Данный документ разрешается копировать, распространять и/или модифицировать в соответствии с условиями лицензии свободной документации проекта GNU версии 1.2 или любой опубликованной Фондом свободного программного обеспечения более поздней версии; исключение составляют неизменяемые разделы, а также тексты на передней и задней обложках. Вы можете получить копию лицензии свободной документации проекта GNU в Фонде свободного программного обеспечения, посетив соответствующий вебсайт или написав письмо по адресу: Free Software Foundation Inc, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

1. Введение

1.1. Об этой книге

В данной книге объясняются ключевые концепции API gtkmm для языка программирования C++, предназначенного для создания пользовательских интерфейсов. Также в ней описываются основные элементы пользовательского интерфейса ("виджеты"). Хотя в книге и упоминаются классы, конструкторы и методы, они не описываются в мельчайших подробностях. Поэтому в случае необходимости получения полной информации об API вам следует переходить по ссылкам на страницы справочной документации.

Эта книга требует от читателя хорошего знания как самого языка программирования C++, так и способов разработки приложений с использованием языка C++.

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

1.2. gtkmm

gtkmm является оберткой для языка программирования C++ над библиотекой Gtk+, используемой для создания графических пользовательских интерфейсов. Она распространяется в соответствии с условиями лицензии LGPL, потому вы можете использовать gtkmm для разработки программного обеспечения с открытым исходным кодом, свободного программного обеспечения или даже коммерческого несвободного программного обеспечения без необходимости покупки лицензий.

Изначально обертка gtkmm имела название gtk--, так как в названии Gtk+ уже использовался символ "+". Однако, по той причине, что символы "-" с трудом индексируются поисковыми машинами, пакет получил имя gtkmm, которое используется и сегодня.

1.2.1 Для чего использовать gtkmm вместо GTK+?

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

В случае использования gtkmm осуществляется более безопасное использование типов, поэтому компилятор имеет возможность выявлять те ошибки, которые могут обнаруживаться только в процессе работы приложения, созданного с использованием языка программирования C. Применение специфичных типов также делает API более прозрачным, так как у вас появляется возможность идентификации используемых типов сразу же после ознакомления с описанием метода.

Наследование может использоваться для создания новых дочерних виджетов. Создание новых дочерних виджетов в GTK+ в случае использования языка программирования C является настолько запутанным и подверженным ошибкам процессом, что использующие язык C разработчики практически не занимаются этим. Как разработчик, использующий язык программирования C++, вы знаете, что наследование является одной из основных техник объектно-ориентированного программирования.

Имеется возможность непосредственной работы с экземплярами классов, позволяющая значительно упростить управление памятью. При использовании языка C доступ ко всем виджетам GTK+ осуществляется с помощью указателей. Как разработчику, использующему язык C++, вам должно быть известно, что использования указателей следует избегать везде, где это возможно.

Также при использовании gtkmm приходится писать меньше кода в сравнении с GTK+, где используются имена функций с префиксами и множество макросов для приведения типов.

1.2.2. gtkmm в сравнении с Qt

Фреймворк Qt, изначально разработанный компанией Trolltech, является главным конкурентом gtkmm и поэтому заслуживает обсуждения.

Разработчики gtkmm предпочитают использовать gtkmm вместо Qt из-за того, что gtkmm лучшим образом следует принципам языка C++. Фреймворк Qt создавался в то время, когда язык C++ и его стандартная библиотека не были стандартизированы и не поддерживались в полном объеме компиляторами. Из-за этого в рамках фреймворка дублируется множество функций, присутствующих на данный момент в стандартной библиотеке, таких, как контейнеры и механизмы получения информации о типах. Что еще более важно, компания Trolltech модифицировала язык C++ для реализации сигналов, поэтому классы, предназначенные для работы с фреймворком Qt, не могут без лишних сложностей использоваться совместно с классами, не имеющими к Qt никакого отношения. При работе над gtkmm удалось использовать стандартные средства языка C++ для реализации сигналов без изменений самого языка C++. Обратитесь к разделу "Часто задаваемые вопросы" для получения более подробной информации о различиях данных подходов.

1.2.3. gtkmm является оберткой

gtkmm является не тулкитом, разработанным с использованием языка программирования C++, а оберткой на языке программирования C++ для тулкита, разработанного с использованием языка программирования C. Это разделение интерфейса и реализации имеет ряд преимуществ. Разработчики gtkmm могут тратить большую часть своего времени на обсуждение того, как реализовать наиболее прозрачный API, не идя на нелепые компромиссы, вызванные техническими недоработками. Мы вносим небольшие изменения в расположенную уровнем ниже кодовую базу тулкита GTK+, но так же поступают и разработчики, использующие язык C, разработчики, использующие язык Perl, разработчики, использующие язык Python и.т.д. Поэтому благодаря усилиям большей аудитории пользователей тулкит GTK+ получает преимущество перед специфичными для языка программирования тулкитами - появляется больше реализаций, больше разработчиков, больше тестировщиков и больше пользователей.


Следующий раздел : 2. Установка.