А.В. Шикуть
6
Кроссплатформенная среда GTK+ (сокращение от GIMP ToolKit)
представляет собой библиотеку функций графического интерфейса, так
называемых виджетов (Widget). GTK+ написана на языке С и предна-
значена для работы в операционной системе GNU/Linux, Mac OS X,
других Unix-подобных системах, а также в операционной среде Win-
dows. Наряду с Qt, GTK+ является одной из наиболее популярных на
сегодняшний день библиотек для X Window System. Изначально среда
GTK+ являлась частью графического редактора GIMP, впоследствии
развилась в отдельный самостоятельный проект и приобрела значи-
тельную популярность. GTK+ представляет собой свободное про-
граммное обеспечение и позволяет создавать как свободное, так и про-
приетарное программное обеспечение. Кроме того, GTK+ является
официальной библиотекой для создания графического интерфейса про-
екта GNU. Несмотря на то, что GTK+ написана на языке С, она является
объектно-ориентированной средой и позволяет легко создавать интер-
фейсы для других языков программирования таких как Ada, C, C++, C#
и других языков программирования платформы .NET, а также Fortran,
FreeBASIC, Free Pascal, Java, JavaScript, PureBasic, Python, Smalltalk.
Рассмотрим некоторые особенности создания приложений
на
языке С++ с использованием графического интерфейса кроссплат-
форменной библиотеки GTK+ в среде разработки Qt Creator и компи-
лятора GCC. Для решения задачи преобразования матриц организуем
обработку событий взаимосвязанных объектов с помощью системы
управления событиями. При этом для реализации событий использу-
ются сигналы (
signal
) и слоты (
slot
) [5].
Сигнал генерируется в ответ на некоторое событие и несет в себе
информацию об этом событии
Слот — это функция, которая вызывается в ответ на определенный
сигнал. Следует иметь в виду, что если раньше требовалось отмечать
слоты ключевым словом
slots
, то в последнее время, так как реализа-
ция слотов стала основаться на шаблонах (
templates
), необходимость в
этом ключевом слове отпала. В целях поддержки старого исходного
кода эта возможность языка перешла в состояние
deprecated.
К сигналам и слотам предъявляются следующие требования:
1) сигналы ничего не должны знать о слотах, в которые они от-
правляются;
2) сигналы несут в себе некоторые обобщенные данные;
3) слот должен знать, какие данные он хочет получить от сигнала;
4) слот не должен знать, кто отправил сигнал;
5) допускаются множественные соединения (сигнал может быть
присоединен к разным слотам, и к одному слоту может быть подсо-
единено несколько сигналов);
6) сигналы и слоты должны иметь свои имена.