GtkWidget
GtkWidget — Базовый класс для всех виджетов
Функции
Свойства
| gboolean | can-focus | Чтение / Запись |
| gboolean | can-target | Чтение / Запись |
| GStrv | css-classes | Чтение / Запись |
| char * | css-name | Чтение / Запись / Только для создания |
| GdkCursor * | cursor | Чтение / Запись |
| gboolean | focus-on-click | Чтение / Запись |
| gboolean | focusable | Чтение / Запись |
| GtkAlign | halign | Чтение / Запись |
| gboolean | has-default | Чтение |
| gboolean | has-focus | Чтение |
| gboolean | has-tooltip | Чтение / Запись |
| int | height-request | Чтение / Запись |
| gboolean | hexpand | Чтение / Запись |
| gboolean | hexpand-set | Чтение / Запись |
| GtkLayoutManager * | layout-manager | Чтение / Запись |
| int | margin-bottom | Чтение / Запись |
| int | margin-end | Чтение / Запись |
| int | margin-start | Чтение / Запись |
| int | margin-top | Чтение / Запись |
| char * | name | Чтение / Запись |
| double | opacity | Чтение / Запись |
| GtkOverflow | overflow | Чтение / Запись |
| GtkWidget * | parent | Чтение |
| gboolean | receives-default | Чтение / Запись |
| GtkRoot * | root | Чтение |
| int | scale-factor | Чтение |
| gboolean | sensitive | Чтение / Запись |
| char * | tooltip-markup | Чтение / Запись |
| char * | tooltip-text | Чтение / Запись |
| GtkAlign | valign | Чтение / Запись |
| gboolean | vexpand | Чтение / Запись |
| gboolean | vexpand-set | Чтение / Запись |
| gboolean | visible | Чтение / Запись |
| int | width-request | Чтение / Запись |
Сигналы
| void | destroy | Без обработчиков |
| void | direction-changed | Выполнить сначала |
| void | hide | Выполнить сначала |
| gboolean | keynav-failed | Выполнить последним |
| void | map | Выполнить сначала |
| gboolean | mnemonic-activate | Выполнить последним |
| void | move-focus | Действие |
| gboolean | query-tooltip | Выполнить последним |
| void | realize | Выполнить сначала |
| void | show | Выполнить сначала |
| void | state-flags-changed | Выполнить сначала |
| void | unmap | Выполнить сначала |
| void | unrealize | Выполнить последним |
Типы и значения
| GtkWidget | |
| struct | GtkWidgetClass |
| GtkRequisition | |
| typedef | GtkAllocation |
| enum | GtkTextDirection |
| enum | GtkPickFlags |
| enum | GtkOverflow |
| enum | GtkSizeRequestMode |
| struct | GtkRequestedSize |
| enum | GtkAlign |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
├── GtkWindow
├── GtkActionBar
├── GtkAppChooserButton
├── GtkAppChooserWidget
├── GtkAspectFrame
├── GtkBox
├── GtkButton
├── GtkCalendar
├── GtkCellView
├── GtkCenterBox
├── GtkCheckButton
├── GtkColorButton
├── GtkColorChooserWidget
├── GtkColumnView
├── GtkComboBox
├── GtkDragIcon
├── GtkDrawingArea
├── GtkDropDown
├── GtkEditableLabel
├── GtkPopover
├── GtkEntry
├── GtkExpander
├── GtkFileChooserWidget
├── GtkFixed
├── GtkFlowBox
├── GtkFlowBoxChild
├── GtkFontButton
├── GtkFontChooserWidget
├── GtkFrame
├── GtkGLArea
├── GtkGrid
├── GtkListBase
├── GtkHeaderBar
├── GtkIconView
├── GtkImage
├── GtkInfoBar
├── GtkLabel
├── GtkListBox
├── GtkListBoxRow
├── GtkMediaControls
├── GtkMenuButton
├── GtkNotebook
├── GtkOverlay
├── GtkPaned
├── GtkPasswordEntry
├── GtkPicture
├── GtkPopoverMenuBar
├── GtkProgressBar
├── GtkRange
├── GtkRevealer
├── GtkScaleButton
├── GtkScrollbar
├── GtkScrolledWindow
├── GtkSearchBar
├── GtkSearchEntry
├── GtkSeparator
├── GtkShortcutLabel
├── GtkShortcutsShortcut
├── GtkSpinButton
├── GtkSpinner
├── GtkStack
├── GtkStackSidebar
├── GtkStackSwitcher
├── GtkStatusbar
├── GtkSwitch
├── GtkLevelBar
├── GtkText
├── GtkTextView
├── GtkTreeExpander
├── GtkTreeView
├── GtkVideo
├── GtkViewport
├── GtkWindowControls
╰── GtkWindowHandle
Известные производные интерфейсы
GtkWidget требуется для GtkActionable, GtkAppChooser, GtkCellEditable, GtkEditable, GtkNative и GtkRoot.
Реализованные интерфейсы
GtkWidget реализует GtkAccessible, GtkBuildable и GtkConstraintTarget.
Включаемые файлы
#include <gtk/gtk.h>
Описание
GtkWidget является базовым классом, от которого все виджеты в GTK наследуются. Он управляет жизненным циклом виджета, состояниями и стилем.
Управление геометрией по высоте для ширины
GTK использует систему управления геометрией по высоте для ширины (и ширине для высоты). Высота для ширины означает, что виджет может изменять необходимое вертикальное пространство в зависимости от предоставленной горизонтальной ширины (и аналогично для ширины для высоты). Наиболее распространённый пример — метка, которая переформатирует текст для заполнения доступной ширины, переносит текст на несколько строк и, следовательно, требует меньшей высоты.
Управление геометрией по высоте для ширины в GTK реализуется с помощью двух виртуальных методов:
При реализации управления геометрией по высоте для ширины и использовании её в реализации виджетов необходимо учитывать некоторые важные моменты.
Если вы реализуете прямой подкласс GtkWidget, который поддерживает управление геометрией по высоте для ширины или ширине для высоты для себя или своих дочерних виджетов, виртуальная функция GtkWidgetClass.get_request_mode() также должна быть реализована и возвращать предпочтительный режим запроса виджета. Стандартная реализация этой виртуальной функции возвращает GTK_SIZE_REQUEST_CONSTANT_SIZE, что означает, что виджету будет передаваться только значение -1 в качестве значения for_size для его реализации GtkWidgetClass.measure().
Система управления геометрией будет запросы иерархии виджетов только в одном направлении за раз. Когда виджеты изначально запрашиваются для получения минимальных размеров, это обычно выполняется в двух начальных проходах в режиме GtkSizeRequestMode, выбранном верхним уровнем.
Например, при запросе в нормальном режиме GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH: Во-первых, будут вычислены минимальная и естественная ширина каждого виджета в интерфейсе с использованием gtk_widget_measure() с направлением GTK_ORIENTATION_HORIZONTAL и значением for_size -1. Поскольку предпочтительные ширины каждого виджета зависят от предпочтительных ширин их дочерних элементов, эта информация распространяется по иерархии, и в конечном итоге определяется минимальная и естественная ширина для всего верхнего уровня. Затем верхний уровень использует минимальную ширину для запроса минимальной высоты, контекстуальной к этой ширине, с использованием gtk_widget_measure() с направлением GTK_ORIENTATION_VERTICAL и значением for_size, только что вычисленной ширины. Это также будет сильно рекурсивной операцией. Минимальная высота для минимальной ширины обычно используется для установки ограничения минимального размера на верхнем уровне.
После того, как окно верхнего уровня первоначально запросило свой размер по обеим осям, оно может продолжить выделение себе разумного размера (или размера, ранее указанного с помощью gtk_window_set_default_size()). Во время рекурсивного процесса выделения важно отметить, что циклы запроса будут рекурсивно выполняться во время выделения виджетами их дочерних элементов. Каждый виджет, после выделения размера, сначала разделит пространство в одном направлении среди своих дочерних элементов, а затем запросит высоту каждого дочернего элемента для его целевой выделенной ширины или его ширину для выделенной высоты в зависимости от случая. Таким образом, виджет GtkWidget обычно будет запрашиваться о размере несколько раз, прежде чем ему фактически будет выделен размер. Размер, который в конечном итоге будет выделен виджету, конечно, может отличаться от размера, который он запросил. По этой причине GtkWidget кэширует небольшое количество результатов, чтобы избежать повторного запроса одних и тех же размеров в одном цикле выделения.
Если виджет перемещает содержимое, чтобы разумно использовать выделенный размер, то он должен поддерживать запрос как в режимах GtkSizeRequestModes, даже если данный виджет обменивается размерами только в одном направлении.
Например, GtkLabel, который выполняет перенос текста по высоте для ширины, не ожидает, что к нему будет вызван GtkWidgetClass.measure() с направлением GTK_ORIENTATION_VERTICAL, так как этот вызов относится к запросу ширины для высоты. В этом случае метка должна вернуть высоту, необходимую для своей минимальной возможной ширины. Следуя этому правилу, любой виджет, который обрабатывает запросы по высоте для ширины или ширине для высоты, всегда будет выделен, по крайней мере, достаточно места, чтобы вместить своё содержимое.
Вот несколько примеров того, как виджет GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH обычно обрабатывает запросы ширины для высоты:
Часто виджету необходимо получить свой собственный запрос во время запроса размера или выделения. Например, при вычислении высоты ему может потребоваться также вычислить ширину. Или при принятии решения о том, как использовать выделение, виджету может понадобиться знать свой естественный размер. В этих случаях виджет должен быть осторожным, чтобы вызывать свои виртуальные методы непосредственно, как в приведённом выше кодовом примере.
Использование функции-обёртки gtk_widget_measure() внутри собственной реализации GtkWidgetClass.size- не сработает. Эти функции возвращают скорректированный запрос, учитывая GtkSizeGroup, флаги выравнивания и расширения виджета, а также его CSS-стиль. Если виджет использовал бы обёртки внутри реализаций своих виртуальных методов, то корректировки (например, отступы виджета) применялись бы дважды. Поэтому GTK этого не позволяет и выведет предупреждение, если вы попробуете сделать это.allocate()
Конечно, если вы получаете запрос размера для другого виджета, например, дочернего виджета, вы должны использовать gtk_widget_measure(). В противном случае вы не должным образом рассмотрите отступы виджета, GtkSizeGroup и т. д.
GTK также поддерживает вертикальное выравнивание по базовой линии виджетов. Это означает, что виджеты позиционируются таким образом, что типографическая основная линия виджетов в одной строке выравниваются. Это происходит, если виджет поддерживает базовые линии, имеет вертикальное выравнивание GTK_ALIGN_BASELINE и находится внутри виджета, который поддерживает базовые линии и имеет естественную «строку», к которой он выравнивается по базовой линии или базовой линии, назначенной ему родительским элементом.
Поддержка выравнивания по базовой линии для виджета также выполняется виртуальной функцией GtkWidgetClass.measure(). Она позволяет сообщать как минимальный, так и естественный размер.
Если виджет оказывается выровненным по базовой линии, ему будет выделено всё пространство в родительском элементе так, как если бы он был GTK_ALIGN_FILL, но выбранную базовую линию можно найти с помощью gtk_widget_get_allocated_baseline(). Если у неё есть значение, отличное от -1, вам необходимо выровнять виджет таким образом, чтобы базовая линия появлялась в заданном положении.
GtkWidget как GtkBuildable
Реализация GtkWidget интерфейса GtkBuildable поддерживает пользовательские элементы для указания различных аспектов виджетов, которые не выражены непосредственно как свойства.
Если родительский виджет использует GtkLayoutManager, GtkWidget поддерживает пользовательский элемент <layout>, используемый для определения свойств макета:
GtkWidget позволяет связывать с виджетами информацию о стиле, например, классы стилей, с помощью пользовательского элемента <style>:
GtkWidget позволяет определить информацию о доступности, такую как свойства, отношения и состояния, с помощью пользовательского элемента <accessibility>:
Создание составных виджетов из шаблона XML
GtkWidget предоставляет некоторые средства для автоматизации процесса создания составных виджетов с использованием языка описания интерфейса GtkBuilder.
Для создания составных виджетов с помощью XML GtkBuilder необходимо связать описание интерфейса с классом виджета во время инициализации класса, используя gtk_widget_class_set_template().
Семантика описания интерфейса, ожидаемая в описаниях составных шаблонов, немного отличается от обычного XML GtkBuilder.
В отличие от обычных описаний интерфейса, gtk_widget_class_set_template() будет ожидать тег <template> как непосредственного потомка верхнего тега <interface>. Тег <template> должен указывать атрибут «class», который должен быть именем типа виджета. Дополнительно может быть указан атрибут «parent» для указания непосредственного родительского типа типа виджета. Это игнорируется GtkBuilder, но необходимо для Glade, чтобы инспектировать, какие свойства и внутренние дочерние элементы существуют для данного типа, когда фактический тип не существует.
XML, содержащийся внутри тега <template>, ведет себя так, как будто он был добавлен к тегу <object>, определяющему widget. Вы можете задавать свойства widget, вставляя теги <property> в тег <template>, а также добавлять теги <child> для добавления дочерних элементов и расширения widget обычным способом, используя теги <object>.
Кроме того, теги <object> также могут быть добавлены до и после начального тега <template> обычным способом, что позволяет определять вспомогательные объекты, которые могут ссылаться на другие виджеты, объявленные как дочерние элементы тега <template>.
Пример определения шаблона GtkBuilder:
Как правило, вы поместите фрагмент шаблона в файл, который связан с вашим проектом, используя GResource. Для загрузки шаблона необходимо вызвать gtk_widget_class_set_template_from_resource() во время инициализации класса вашего типа GtkWidget:
Вам также потребуется вызвать gtk_widget_init_template() в функции инициализации экземпляра:
Вы можете получить доступ к виджетам, определённым в шаблоне, используя функцию gtk_widget_get_template_child(), но обычно вы объявляете указатель в структуре данных экземпляра вашего типа с тем же именем, что и виджет в определении шаблона, и вызываете gtk_widget_class_bind_template_child_private() с этим именем, например:
Вы также можете использовать gtk_widget_class_bind_template_callback() для подключения обратного вызова сигнала, определённого в шаблоне, к функции, видимой в области видимости класса, например:
static void
foo_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum_size,
int *natural_size,
int *minimum_baseline,
int *natural_baseline)
{
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
// Calculate minimum and natural width
}
else // VERTICAL
{
if (i_am_in_height_for_width_mode)
{
int min_width, dummy;
// First, get the minimum width of our widget
GTK_WIDGET_GET_CLASS (widget)->measure (widget, GTK_ORIENTATION_HORIZONTAL, -1,
&min_width, &dummy, &dummy, &dummy);
// Now use the minimum width to retrieve the minimum and natural height to display
// that width.
GTK_WIDGET_GET_CLASS (widget)->measure (widget, GTK_ORIENTATION_VERTICAL, min_width,
minimum_size, natural_size, &dummy, &dummy);
}
else
{
// ... some widgets do both.
}
}
}Функции
gtk_widget_in_destruction ()
gboolean
gtk_widget_in_destruction (GtkWidget *widget); Возвращает, уничтожается ли в данный момент виджет. Эта информация может иногда использоваться для избежания выполнения ненужной работы.
Параметры
widget |
Возвращает
TRUE если widget уничтожается
gtk_widget_unparent ()
void
gtk_widget_unparent (GtkWidget *widget); Эта функция предназначена только для использования в реализациях виджетов. Она должна вызываться родительскими виджетами для разъединения widget от родителя, обычно в методе удаления.
Параметры
widget |
gtk_widget_show ()
void
gtk_widget_show (GtkWidget *widget); Помечает виджет для отображения. Любой виджет, который не отображен, не будет отображаться на экране.
Помните, что необходимо отобразить контейнеры, содержащие виджет, помимо самого виджета, прежде чем он будет отображаться на экране.
При отображении верхнего контейнера он сразу же реализуется и отображается; другие отображаемые виджеты реализуются и отображаются, когда их верхний контейнер реализуется и отображается.
Параметры
widget |
gtk_widget_hide ()
void
gtk_widget_hide (GtkWidget *widget); Отменяет действие gtk_widget_show(), что приводит к скрытию виджета (он становится невидимым для пользователя).
Параметры
widget |
gtk_widget_map ()
void
gtk_widget_map (GtkWidget *widget); Эта функция предназначена только для использования в реализациях виджетов. Приводит к отображению виджета, если он ещё не отображен.
Параметры
widget |
gtk_widget_unmap ()
void
gtk_widget_unmap (GtkWidget *widget); Эта функция предназначена только для использования в реализациях виджетов. Приводит к скрытию виджета, если он отображен.
Параметры
widget |
gtk_widget_realize ()
void
gtk_widget_realize (GtkWidget *widget); Создаёт ресурсы GDK (системы окон) для виджета. Обычно реализация происходит неявно; если вы отображаете виджет и все его родительские контейнеры, виджет будет реализован и отображён автоматически.
Для реализации виджета необходимо, чтобы все его родительские виджеты были реализованы; вызов gtk_widget_realize() реализует родительские виджеты помимо widget. Если виджет ещё не находится внутри верхнего окна, при его реализации возникнут ошибки.
Эта функция в основном используется в реализациях виджетов и не очень полезна в других случаях. Во многих случаях, когда вы считаете, что вам может потребоваться эта функция, лучше подключиться к сигналу, который будет вызван после автоматической реализации виджета, например, “realize”.
Параметры
widget |
gtk_widget_unrealize ()
void
gtk_widget_unrealize (GtkWidget *widget); Эта функция полезна только в реализациях виджетов. Приводит к дереализации виджета (освобождает все ресурсы GDK, связанные с виджетом).
Параметры
widget |
gtk_widget_queue_draw ()
void
gtk_widget_queue_draw (GtkWidget *widget); Планирует перерисовку этого виджета в фазе отрисовки текущей или следующей кадровой анимации. Это означает, что реализация GtkWidgetClass.snapshot() widget будет вызвана.
Параметры
widget |
gtk_widget_queue_resize ()
void
gtk_widget_queue_resize (GtkWidget *widget); Эта функция предназначена только для использования в реализациях виджетов. Помечает виджет для перерасчёта размеров; следует вызывать, когда у виджета есть новый запрос на размер. Например, при изменении текста в GtkLabel, GtkLabel планирует перерасчёт размера, чтобы обеспечить достаточное пространство для нового текста.
Обратите внимание, что нельзя вызывать gtk_widget_queue_resize() для виджета изнутри реализации виртуального метода GtkWidgetClass::size_allocate. Вызовы gtk_widget_queue_resize() изнутри GtkWidgetClass::size_allocate будут проигнорированы.
Параметры
widget |
gtk_widget_queue_allocate ()
void
gtk_widget_queue_allocate (GtkWidget *widget); Эта функция предназначена только для использования в реализациях виджетов.
Помечает виджет для повторного выполнения функции GtkWidgetClass::size_allocate. Используйте эту функцию вместо gtk_widget_queue_resize(), когда запрос на размер widget не изменился, но он хочет переместить своё содержимое.
Пример использования этой функции — gtk_widget_set_halign().
Параметры
widget |
gtk_widget_get_frame_clock ()
GdkFrameClock *
gtk_widget_get_frame_clock (GtkWidget *widget); Получает таймер кадра для виджета. Таймер кадра — это глобальный «тактирующий сигнал», который может использоваться для управления анимациями и перерисовками. Наиболее распространённая причина получения таймера кадра — вызов gdk_frame_clock_get_frame_time() для получения времени, используемого для анимации. Например, вы можете записать начало анимации с начальным значением из gdk_frame_clock_get_frame_time(), а затем обновить анимацию, вызвав gdk_frame_clock_get_frame_time() снова во время каждой перерисовки.
gdk_frame_clock_request_phase() приведет к новому кадру на таймере, но не обязательно перерисует какие-либо виджеты. Для перерисовки виджета необходимо использовать gtk_widget_queue_draw(), что делает виджет недействительным (следовательно, он запланирован на отрисовку в следующем кадре). gtk_widget_queue_draw() также приведет к запросу кадра на соответствующем таймере кадра.
Таймер кадра виджета не изменится, пока виджет отображается. Перемещение виджета (что подразумевает временное скрытие) может изменить таймер кадра виджета.
У нереализованных виджетов нет таймера кадра.
Параметры
widget |
gtk_widget_get_scale_factor ()
int
gtk_widget_get_scale_factor (GtkWidget *widget); Получает внутренний масштабный коэффициент, отображающий координаты окна в фактические пиксели устройства. На традиционных системах он равен 1, на устройствах с высокой плотностью пикселей — большему значению (обычно 2).
См. gdk_surface_get_scale_factor().
Параметры
widget |
Возвращает
коэффициент масштабирования для widget
GtkTickCallback ()
gboolean (*GtkTickCallback) (GtkWidget *widget,GdkFrameClock *frame_clock,gpointer user_data);
Тип обратного вызова для добавления функции обновления анимаций. См. gtk_widget_add_tick_callback().
Параметры
widget | виджет | |
frame_clock | таймер кадров виджета (то же, что вызов | |
user_data | пользовательские данные, переданные в |
Возвращает
G_SOURCE_CONTINUE , если обратный вызов таймера должен продолжать вызываться, G_SOURCE_REMOVE , если обратный вызов таймера должен быть удалён.
gtk_widget_add_tick_callback ()
guint gtk_widget_add_tick_callback (GtkWidget *widget,GtkTickCallback callback,gpointer user_data,GDestroyNotify notify);
Очередит обновление кадра анимации и добавит обратный вызов, который будет вызываться перед каждым кадром. Пока обратный вызов таймера не будет удалён, он будет вызываться часто (обычно со скоростью кадров устройства вывода или так быстро, как приложение может перерисоваться, что медленнее). По этой причине он наиболее подходит для обработки графики, которая изменяется каждый кадр или через несколько кадров. Обратный вызов таймера не подразумевает автоматическое перераспределение или перерисовку. Если вам нужна перерисовка или перерасчёт, и вы не меняете свойства виджета, которые бы это вызвали (например, изменение текста GtkLabel), то вам нужно будет вызвать gtk_widget_queue_resize() или gtk_widget_queue_draw().
gdk_frame_clock_get_frame_time() обычно используется для тайминга непрерывных анимаций, а gdk_frame_timings_get_predicted_presentation_time() — если вы пытаетесь отобразить отдельные кадры в определённые моменты времени.
Это более удобная альтернатива прямому подключению к сигналу “update” GdkFrameClock, так как вам не нужно беспокоиться о том, когда GdkFrameClock присваивается виджету.
Параметры
widget | ||
callback | функция для обновления анимаций | |
user_data | данные, передаваемые в | [closure] |
notify | функция для освобождения |
Возвращает
идентификатор соединения этого обратного вызова. Удалить обратный вызов, передав идентификатор, возвращённый этой функцией, в gtk_widget_remove_tick_callback()
gtk_widget_remove_tick_callback ()
void gtk_widget_remove_tick_callback (GtkWidget *widget,guint id);
Удаляет обратный вызов таймера, ранее зарегистрированный с помощью gtk_widget_add_tick_callback().
Параметры
widget | ||
id | идентификатор, возвращённый |
gtk_widget_size_allocate ()
void gtk_widget_size_allocate (GtkWidget *widget,const GtkAllocation *allocation,int baseline);
Это простой вид gtk_widget_allocate(), который принимает новое положение widget в качестве части allocation .
Параметры
widget | ||
allocation | положение и размер, которые нужно выделить для | |
baseline | Базовая линия дочернего элемента или -1 |
gtk_widget_allocate ()
void gtk_widget_allocate (GtkWidget *widget,int width,int height,int baseline,GskTransform *transform);
Эта функция используется только подклассами GtkWidget для задания размера, положения и (необязательно) базовой линии своих дочерних виджетов.
В этой функции выделение и базовая линия могут быть скорректированы. Заданное выделение будет принудительно больше, чем минимальный размер виджета, а также по крайней мере 0×0 по размеру.
Для версии без преобразования, см. gtk_widget_size_allocate()
Параметры
widget | ||
width | Новый размер по ширине | |
height | Новый размер по высоте | |
baseline | Новая базовая линия | |
transform | Преобразование, которое нужно применить к | [transfer full][allow-none] |
gtk_widget_class_add_shortcut ()
void gtk_widget_class_add_shortcut (GtkWidgetClass *widget_class,GtkShortcut *shortcut);
Устанавливает ярлык в widget_class . Каждый экземпляр, созданный для widget_class или его подклассов, унаследует этот ярлык и вызовет его.
Ярлыки, добавленные таким образом, будут активироваться на стадии GTK_PHASE_BUBBLE, что означает, что они могут быть активированы, если фокус находится на дочерних виджетах.
Эта функция должна использоваться только в функциях инициализации класса, иначе нет гарантии, что ярлык будет установлен.
Параметры
widget_class | класс, к которому нужно добавить ярлык | |
shortcut | the GtkShortcut to add. | [transfer none] |
gtk_widget_class_add_binding ()
void gtk_widget_class_add_binding (GtkWidgetClass *widget_class,guint keyval,GdkModifierType mods,GtkShortcutFunc callback,const char *format_string,...);
Создаёт новую комбинацию клавиш для widget_class, которая вызывает указанную callback с аргументами, считываемыми в соответствии с format_string . Аргументы и строка формата должны быть предоставлены так же, как и в g_variant_new().
Эта функция является удобной обёрткой вокруг gtk_widget_class_add_shortcut() и должна вызываться во время инициализации класса. Она не предоставляет возможности для пользовательских данных; если вам это необходимо, используйте gtk_widget_class_add_shortcut() с настраиваемой комбинацией клавиш.
[skip]
Параметры
widget_class | класс, к которому добавляется привязка | |
keyval | значение кода клавиши для устанавливаемой привязки | |
mods | модификатор клавиши для устанавливаемой привязки | |
callback | обработчик, вызываемый при активации | |
format_string | строка формата GVariant для аргументов или | [nullable] |
... | аргументы, указанные в строке формата. |
gtk_widget_class_add_binding_signal ()
void gtk_widget_class_add_binding_signal (GtkWidgetClass *widget_class,guint keyval,GdkModifierType mods,const char *signal,const char *format_string,...);
Создаёт новую комбинацию клавиш для widget_class, которая излучает указанное действие signal с аргументами, считываемыми в соответствии с format_string . Аргументы и строка формата должны быть предоставлены так же, как и в g_variant_new().
Эта функция является удобной обёрткой вокруг gtk_widget_class_add_shortcut() и должна вызываться во время инициализации класса.
[skip]
Параметры
widget_class | класс, к которому добавляется привязка | |
keyval | значение кода клавиши для устанавливаемой привязки | |
mods | модификатор клавиши для устанавливаемой привязки | |
signal | сигнал для выполнения | |
format_string | строка формата GVariant для аргументов или | [nullable] |
... | аргументы, указанные в строке формата. |
gtk_widget_class_add_binding_action ()
void gtk_widget_class_add_binding_action (GtkWidgetClass *widget_class,guint keyval,GdkModifierType mods,const char *action_name,const char *format_string,...);
Создаёт новую комбинацию клавиш для widget_class, которая активирует указанное action_name с аргументами, считываемыми в соответствии с format_string . Аргументы и строка формата должны быть предоставлены так же, как и в g_variant_new().
Эта функция является удобной обёрткой вокруг gtk_widget_class_add_shortcut() и должна вызываться во время инициализации класса.
[skip]
Параметры
widget_class | класс, к которому добавляется привязка | |
keyval | значение кода клавиши для устанавливаемой привязки | |
mods | модификатор клавиши для устанавливаемой привязки | |
action_name | действие для активации | |
format_string | строка формата GVariant для аргументов или | [nullable] |
... | аргументы, указанные в строке формата. |
gtk_widget_class_set_layout_manager_type ()
void gtk_widget_class_set_layout_manager_type (GtkWidgetClass *widget_class,GType type);
Устанавливает тип, используемый для создания менеджеров компоновки для виджетов класса widget_class . Указанный type должен быть подклассом GtkLayoutManager.
Эта функция должна вызываться только из функций инициализации класса виджетов.
Параметры
widget_class | класс для установки типа менеджера компоновки | |
type | Тип объекта, реализующего GtkLayoutManager для |
gtk_widget_class_get_layout_manager_type ()
GType
gtk_widget_class_get_layout_manager_type
(GtkWidgetClass *widget_class); Возвращает тип GtkLayoutManager, используемый классом виджета GtkWidget.
См. также: gtk_widget_class_set_layout_manager_type()
Параметры
widget_class | класс GtkWidgetClass |
Возвращаемое значение
подкласс GtkLayoutManager или G_TYPE_INVALID
gtk_widget_class_set_activate_signal ()
void gtk_widget_class_set_activate_signal (GtkWidgetClass *widget_class,guint signal_id);
Устанавливает поле GtkWidgetClass.activate_signal с заданным signal_id; сигнал будет излучен при вызове gtk_widget_activate().
signal_id должен быть зарегистрирован с помощью g_signal_new() или g_signal_newv() перед вызовом этой функции.
Параметры
widget_class | класс GtkWidgetClass | |
signal_id | идентификатор сигнала активации |
gtk_widget_class_set_activate_signal_from_name ()
void gtk_widget_class_set_activate_signal_from_name (GtkWidgetClass *widget_class,const char *signal_name);
Устанавливает поле GtkWidgetClass.activate_signal с идентификатором сигнала для данного signal_name; сигнал будет выпущен при вызове gtk_widget_activate().
Указанное signal_name для widget_type должно быть зарегистрировано с помощью g_signal_new() или g_signal_newv() перед вызовом этой функции.
Параметры
widget_class | ||
signal_name | имя сигнала активации для |
gtk_widget_class_get_activate_signal ()
guint
gtk_widget_class_get_activate_signal (GtkWidgetClass *widget_class); Возвращает идентификатор сигнала активации, установленного с помощью gtk_widget_class_set_activate_signal().
Параметры
widget_class |
Возвращает
идентификатор сигнала или 0, если класс виджета не определяет сигнал активации
gtk_widget_activate ()
gboolean
gtk_widget_activate (GtkWidget *widget); Для виджетов, которые могут быть «активированы» (кнопки, пункты меню и т. д.), эта функция активирует их. Активация вызовет сигнал, установленный с помощью gtk_widget_class_set_activate_signal() во время инициализации класса.
Активация происходит при нажатии клавиши Enter на виджете во время навигации по клавиатуре.
Если вы хотите самостоятельно обрабатывать привязку клавиш активации, рекомендуется использовать gtk_widget_class_add_shortcut() с действием, созданным с помощью gtk_signal_action_new().
Если widget не может быть активирован, функция возвращает FALSE.
Параметры
widget | a GtkWidget, который можно активировать |
Возвращает
TRUE если виджет можно было активировать
gtk_widget_is_focus ()
gboolean
gtk_widget_is_focus (GtkWidget *widget); Определяет, является ли виджет виджетом фокуса в своем верхнем уровне. (Это не означает, что свойство “has-focus” обязательно установлено; “has-focus” будет установлено только в том случае, если виджет верхнего уровня дополнительно имеет глобальный фокус ввода).
Параметры
widget |
Возвращает
TRUE если виджет является виджетом фокуса.
gtk_widget_grab_focus ()
gboolean
gtk_widget_grab_focus (GtkWidget *widget); Приводит к тому, что widget (или один из его потомков) получает фокус клавиатуры для GtkWindow, в котором он находится.
Если widget не может получить фокус или его реализация ::grab_focus не может передать фокус потомку widget, который может получить фокус, он не получит фокус, и будет возвращено FALSE.
Вызов gtk_widget_grab_focus() на уже фокусированном виджете разрешен, не должен оказывать никакого влияния и возвращать TRUE.
Параметры
widget |
Возвращает
TRUE если фокус теперь внутри widget .
gtk_widget_set_name ()
void gtk_widget_set_name (GtkWidget *widget,const char *name);
Виджеты могут быть именованы, что позволяет ссылаться на них из файла CSS. Вы можете применить стиль к виджетам с определенным именем в файле CSS. См. документацию по синтаксису CSS (на той же странице, что и документация для GtkStyleContext).
Обратите внимание, что синтаксис CSS имеет определенные специальные символы для разграничения и представления элементов в селекторе (точка, #, >, *...), поэтому использование этих символов сделает ваш виджет невозможным для сопоставления по имени. Любая комбинация буквенно-цифровых символов, дефисов и подчеркиваний подойдет.
Параметры
widget | ||
name | имя виджета |
gtk_widget_get_name ()
const char *
gtk_widget_get_name (GtkWidget *widget); Возвращает имя виджета. См. gtk_widget_set_name() для значения имен виджетов.
Параметры
widget |
Возвращает
имя виджета. Эта строка принадлежит GTK и не должна изменяться или освобождаться.
[nullable]
gtk_widget_set_sensitive ()
void gtk_widget_set_sensitive (GtkWidget *widget,gboolean sensitive);
Устанавливает чувствительность виджета. Виджет чувствителен, если пользователь может с ним взаимодействовать. Нечувствительные виджеты «выделены серым цветом», и пользователь с ними не может взаимодействовать. Нечувствительные виджеты известны как «неактивные», «отключенные» или «затемненные» в некоторых других наборах инструментов.
Параметры
widget | ||
sensitive |
|
gtk_widget_set_parent ()
void gtk_widget_set_parent (GtkWidget *widget,GtkWidget *parent);
Эта функция полезна только при реализации подклассов GtkWidget.
Устанавливает parent в качестве родительского виджета widget и заботится о некоторых деталях, таких как обновление состояния и стиля дочернего элемента для отражения его нового местоположения и изменение размера родителя. Противоположная функция — gtk_widget_unparent().
Параметры
widget | ||
parent | родительский виджет |
gtk_widget_get_root ()
GtkRoot *
gtk_widget_get_root (GtkWidget *widget); Возвращает виджет GtkRoot для widget или NULL если виджет не содержится в дереве виджетов с корневым виджетом.
Виджеты GtkRoot вернут себя здесь.
Параметры
widget |
Возвращает
корневой виджет widget или NULL.
[transfer none][nullable]
gtk_widget_get_native ()
GtkNative *
gtk_widget_get_native (GtkWidget *widget); Возвращает виджет GtkNative, содержащий widget, или NULL если виджет не содержится внутри дерева виджетов с нативным предком.
Виджеты GtkNative вернут себя здесь.
Параметры
widget | виджет GtkWidget |
gtk_widget_get_ancestor ()
GtkWidget * gtk_widget_get_ancestor (GtkWidget *widget,GType widget_type);
Получает первого предка widget типа widget_type. Например, gtk_widget_get_ancestor (widget, GTK_TYPE_BOX) получает первый GtkBox, являющийся предком widget. К возвращаемому виджету не будет добавлена ссылка; его не нужно освобождать.
Обратите внимание, что в отличие от gtk_widget_is_ancestor(), gtk_widget_get_ancestor() считает widget предком самого себя.
Параметры
widget | виджет GtkWidget | |
widget_type | тип предка |
Возвращает
предок-виджет или NULL если не найден.
[transfer none][nullable]
gtk_widget_is_ancestor ()
gboolean gtk_widget_is_ancestor (GtkWidget *widget,GtkWidget *ancestor);
Определяет, находится ли widget где-то внутри ancestor, возможно с промежуточными контейнерами.
Возвращает
TRUE если ancestor содержит widget как дочерний элемент, внучатый элемент и т.д.
gtk_widget_translate_coordinates ()
gboolean gtk_widget_translate_coordinates (GtkWidget *src_widget,GtkWidget *dest_widget,double src_x,double src_y,double *dest_x,double *dest_y);
Преобразует координаты, относительные к размещению src_widget, в координаты, относительные к размещению dest_widget. Для выполнения этой операции оба виджета должны иметь общий верхний уровень.
Параметры
src_widget | виджет GtkWidget | |
dest_widget | виджет GtkWidget | |
src_x | координата X, относительная к | |
src_y | координата Y, относительная к | |
dest_x | место для хранения координаты X, относительной к | [out][optional] |
dest_y | место для хранения координаты Y, относительной к | [out][optional] |
Возвращает
FALSE если у src_widget и dest_widget нет общего предка. В этом случае в *dest_x и *dest_y хранится 0. В противном случае TRUE.
gtk_widget_add_controller ()
void gtk_widget_add_controller (GtkWidget *widget,GtkEventController *controller);
Добавляет controller к widget, чтобы он получал события. Обычно эту функцию нужно вызывать сразу после создания любого вида GtkEventController.
Параметры
widget | виджет GtkWidget | |
controller | GtkEventController, который еще не был добавлен к виджету. | [transfer full] |
gtk_widget_remove_controller ()
void gtk_widget_remove_controller (GtkWidget *widget,GtkEventController *controller);
Удаляет controller из widget, чтобы он больше не обрабатывал события. Он больше не должен использоваться.
Виджеты автоматически удаляют все контроллеры событий при уничтожении, обычно нет необходимости вызывать эту функцию.
Параметры
widget | виджет GtkWidget | |
controller | [transfer none] |
gtk_widget_set_direction ()
void gtk_widget_set_direction (GtkWidget *widget,GtkTextDirection dir);
Устанавливает направление чтения для конкретного виджета. Это направление контролирует основное направление для виджетов, содержащих текст, а также направление, в котором упаковываются дочерние элементы контейнера. Возможность установки направления нужна для правильной локализации языков с направлением чтения справа налево. Обычно приложения оставляют направление чтения по умолчанию, за исключением контейнеров, где контейнеры организованы в порядке, который явно визуальный, а не логический (например, кнопки для выравнивания текста).
Если направление установлено в GTK_TEXT_DIR_NONE, то будет использовано значение, заданное gtk_widget_set_default_direction().
Параметры
widget | виджет GtkWidget | |
dir | новое направление |
gtk_widget_get_direction ()
GtkTextDirection
gtk_widget_get_direction (GtkWidget *widget); Получает направление чтения для конкретного виджета. См. gtk_widget_set_direction().
Параметры
widget | виджет GtkWidget |
Возвращает
направление чтения для виджета.
gtk_widget_set_default_direction ()
void
gtk_widget_set_default_direction (GtkTextDirection dir); Устанавливает направление чтения по умолчанию для виджетов, где направление не было явно установлено с помощью gtk_widget_set_direction().
Параметры
dir | новое направление по умолчанию. Оно не может быть |
gtk_widget_get_default_direction ()
GtkTextDirection
gtk_widget_get_default_direction (void); Получает текущее направление чтения по умолчанию. См. gtk_widget_set_default_direction().
Возвращает
текущее направление по умолчанию.
gtk_widget_create_pango_context ()
PangoContext *
gtk_widget_create_pango_context (GtkWidget *widget); Создаёт новый PangoContext с соответствующей картой шрифтов, опциями шрифта, описанием шрифта и основным направлением для отрисовки текста для этого виджета. См. также gtk_widget_get_pango_context().
Параметры
widget |
gtk_widget_get_pango_context ()
PangoContext *
gtk_widget_get_pango_context (GtkWidget *widget); Получает PangoContext с соответствующей картой шрифтов, описанием шрифта и основным направлением для этого виджета. В отличие от контекста, возвращаемого функцией gtk_widget_create_pango_context(), этот контекст принадлежит виджету (его можно использовать до тех пор, пока экран для виджета не изменится или виджет не будет удалён из его верхнего уровня), и он будет обновлён для соответствия любым изменениям атрибутов виджета. Это можно отслеживать, прослушивая изменения свойства “root” виджета.
Параметры
widget |
gtk_widget_set_font_options ()
void gtk_widget_set_font_options (GtkWidget *widget,const cairo_font_options_t *options);
Устанавливает cairo_font_options_t, используемые для отрисовки Pango в этом виджете. Если не установлено, будут использованы стандартные опции шрифтов для GdkDisplay.
Параметры
widget | ||
options | a cairo_font_options_t, или | [allow-none] |
gtk_widget_get_font_options ()
const cairo_font_options_t *
gtk_widget_get_font_options (GtkWidget *widget); Возвращает cairo_font_options_t, используемые для отрисовки Pango. Если не установлено, будут использованы стандартные опции шрифтов для GdkDisplay.
Параметры
widget |
gtk_widget_set_font_map ()
void gtk_widget_set_font_map (GtkWidget *widget,PangoFontMap *font_map);
Устанавливает карту шрифтов для использования в Pango отрисовке. Карта шрифтов — это объект, используемый для поиска шрифтов. Установка пользовательской карты шрифтов может быть полезной в особых ситуациях, например, когда необходимо добавить приложения специфические шрифты к набору доступных шрифтов.
Если не установлено, виджет унаследует карту шрифтов от родителя.
Параметры
widget | ||
font_map | a PangoFontMap, или | [allow-none] |
gtk_widget_get_font_map ()
PangoFontMap *
gtk_widget_get_font_map (GtkWidget *widget); Получает карту шрифтов, установленную с помощью gtk_widget_set_font_map().
Параметры
widget |
gtk_widget_create_pango_layout ()
PangoLayout * gtk_widget_create_pango_layout (GtkWidget *widget,const char *text);
Создаёт новый PangoLayout с соответствующей картой шрифтов, описанием шрифта и основным направлением для отрисовки текста для этого виджета.
Если вы сохраняете PangoLayout, созданный таким образом, вам нужно пересоздать его, когда контекст виджета PangoContext заменён. Это можно отслеживать, прослушивая изменения свойства “root” виджета.
Параметры
widget | ||
text | текст для установки в макет (может быть | [nullable] |
gtk_widget_get_cursor ()
GdkCursor *
gtk_widget_get_cursor (GtkWidget *widget); Запрашивает курсор, установленный с помощью gtk_widget_set_cursor(). Подробности см. в этой функции.
Параметры
widget |
Возвращаемое значение
текущий используемый курсор или NULL для использования по умолчанию.
[nullable][transfer none]
gtk_widget_set_cursor ()
void gtk_widget_set_cursor (GtkWidget *widget,GdkCursor *cursor);
Устанавливает курсор, отображаемый, когда указательные устройства указывают на widget.
Если cursor равно NULL, widget будет использовать курсор, унаследованный от родительского виджета.
Параметры
widget | ||
cursor | новый курсор или | [allow-none] |
gtk_widget_set_cursor_from_name ()
void gtk_widget_set_cursor_from_name (GtkWidget *widget,const char *name);
Устанавливает курсор с заданным именем, который отображается, когда указательные устройства указывают на widget.
Это вспомогательная функция, которая создаёт курсор через gdk_cursor_new_from_name() и затем устанавливает его на widget с помощью gtk_widget_set_cursor(). Подробности см. в этих 2 функциях.
Кроме того, эта функция позволяет name быть NULL, что равносильно вызову gtk_widget_set_cursor() с курсором NULL.
Параметры
widget | ||
name | Имя курсора или | [nullable] |
gtk_widget_mnemonic_activate ()
gboolean gtk_widget_mnemonic_activate (GtkWidget *widget,gboolean group_cycling);
Выпускает сигнал “mnemonic-activate”.
Параметры
widget | ||
group_cycling |
|
Возвращаемое значение
TRUE если сигнал был обработан
gtk_widget_class_set_accessible_role ()
void gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,GtkAccessibleRole accessible_role);
Устанавливает роль доступности, используемую данным классом GtkWidget.
Разные роли доступности имеют различные состояния и отображаются по-разному средствами вспомогательной технологии.
Параметры
widget_class | ||
accessible_role | the GtkAccessibleRole используемый |
gtk_widget_class_get_accessible_role ()
GtkAccessibleRole
gtk_widget_class_get_accessible_role (GtkWidgetClass *widget_class); Извлекает роль доступности, используемую данным классом GtkWidget.
Разные роли доступности имеют различные состояния и отображаются по-разному средствами вспомогательной технологии.
См. также: gtk_accessible_get_accessible_role()
Параметры
widget_class |
Возвращаемое значение
роль доступности для класса виджета
gtk_widget_child_focus ()
gboolean gtk_widget_child_focus (GtkWidget *widget,GtkDirectionType direction);
Эта функция используется реализациями пользовательских виджетов; если вы пишете приложение, используйте gtk_widget_grab_focus() для перемещения фокуса на конкретный виджет.
gtk_widget_child_focus() вызывается виджетами, когда пользователь перемещает фокус по окну с помощью комбинаций клавиш. direction указывает, какой тип движения происходит (вверх, вниз, влево, вправо, табуляция вперёд, табуляция назад). gtk_widget_child_focus() вызывает vfunc GtkWidgetClass.focus(); виджеты переопределяют этот vfunc для реализации соответствующего поведения фокуса.
По умолчанию focus() vfunc виджета должен возвращать TRUE если перемещение в direction оставило фокус на фокусируемом месте внутри этого виджета, и FALSE если перемещение в direction переместило фокус за пределы виджета. Если возвращается TRUE, виджеты обычно вызывают gtk_widget_grab_focus() для соответствующего размещения фокуса; если возвращается FALSE, они не изменяют текущее местоположение фокуса.
Параметры
widget | ||
direction | направление перемещения фокуса |
Возвращаемое значение
TRUE если фокус оказался внутри widget
gtk_widget_get_child_visible ()
gboolean
gtk_widget_get_child_visible (GtkWidget *widget); Получает значение, установленное с помощью gtk_widget_set_child_visible(). Если вам нужна эта функция, возможно, нужно переорганизовать код.
Эта функция полезна только для реализаций контейнеров и никогда не должна вызываться приложением.
Параметры
widget |
Возвращаемое значение
TRUE если виджет сопоставлен с родителем.
gtk_widget_get_settings ()
GtkSettings *
gtk_widget_get_settings (GtkWidget *widget); Получает объект настроек, содержащий настройки, используемые для данного виджета.
Обратите внимание, что этот метод можно вызвать только когда GtkWidget прикреплен к главному окну, поскольку объект настроек специфичен для конкретного GdkDisplay. Если вы хотите отслеживать изменения настроек виджета, подключитесь к событию notify::display.
Параметры
widget | виджет GtkWidget |
gtk_widget_get_clipboard ()
GdkClipboard *
gtk_widget_get_clipboard (GtkWidget *widget); Это вспомогательная функция для получения объекта буфера обмена для GdkDisplay, который использует widget.
Обратите внимание, что эта функция всегда работает, даже когда widget ещё не реализован.
Параметры
widget | виджет GtkWidget |
Возвращает
соответствующий объект буфера обмена.
[transfer none]
gtk_widget_get_primary_clipboard ()
GdkClipboard *
gtk_widget_get_primary_clipboard (GtkWidget *widget); Это вспомогательная функция для получения объекта первичного буфера обмена для GdkDisplay, который использует widget.
Обратите внимание, что эта функция всегда работает, даже когда widget ещё не реализован.
Параметры
widget | виджет GtkWidget |
Возвращает
соответствующий объект буфера обмена.
[transfer none]
gtk_widget_get_display ()
GdkDisplay *
gtk_widget_get_display (GtkWidget *widget); Получение GdkDisplay для главного окна, связанного с этим виджетом. Этот метод можно вызвать только после добавления виджета в иерархию виджетов с GtkWindow на вершине.
В общем случае вы должны создавать ресурсы, зависящие от дисплея, только когда виджет реализован, и освобождать эти ресурсы, когда виджет не реализован.
Параметры
widget | виджет GtkWidget |
gtk_widget_get_size_request ()
void gtk_widget_get_size_request (GtkWidget *widget,int *width,int *height);
Получение запрошенного размера виджета, явно заданного с помощью gtk_widget_set_size_request(). Значение -1 в width или height указывает, что эта размерность не была явно задана, и вместо этого будет использоваться естественный запрос виджета. См. gtk_widget_set_size_request(). Чтобы получить размер, который виджет фактически запросит, вызовите gtk_widget_measure() вместо этой функции.
Параметры
widget | виджет GtkWidget | |
width | место хранения значения ширины, или | [out][allow-none] |
height | место хранения значения высоты, или | [out][allow-none] |
gtk_widget_set_child_visible ()
void gtk_widget_set_child_visible (GtkWidget *widget,gboolean child_visible);
Устанавливает, должен ли widget отображаться вместе со своим родителем при отображении родительского виджета, и widget был показан с помощью gtk_widget_show().
Видимость дочернего элемента можно задать для виджета до его добавления в контейнер с помощью gtk_widget_set_parent(), чтобы избежать ненужного отображения дочерних элементов до их последующего скрытия. Однако он будет сброшен до своего исходного состояния TRUE при удалении виджета из контейнера.
Обратите внимание, что изменение видимости дочернего элемента виджета не приводит к пересчету размеров виджета. В большинстве случаев размер виджета вычисляется по всем видимым дочерним элементам, отображаются они или нет. Если это не так, контейнер может сам пересчитать размеры.
Эта функция полезна только для реализации контейнеров и никогда не должна вызываться приложением.
Параметры
widget | виджет GtkWidget | |
child_visible | если |
gtk_widget_set_size_request ()
void gtk_widget_set_size_request (GtkWidget *widget,int width,int height);
Устанавливает минимальный размер виджета; то есть запрос на размер виджета будет по крайней мере width на height. Вы можете использовать эту функцию, чтобы принудительно сделать виджет больше, чем он обычно бы был.
В большинстве случаев gtk_window_set_default_size() является лучшим выбором для окон верхнего уровня, чем эта функция; установка размера по умолчанию по-прежнему позволит пользователю уменьшить окно. Установка запрошенного размера будет принудительно оставлять окно по крайней мере таким же большим, как запрос на размер. При работе с размерами окон gtk_window_set_geometry_hints() может быть полезной функцией.
Обратите внимание на потенциальную опасность установки любого фиксированного размера - темы, переводы на другие языки, разные шрифты и действия пользователя могут повлиять на подходящий размер для данного виджета. Поэтому практически невозможно жестко закодировать размер, который всегда будет правильным.
Запрос на размер виджета — это наименьший размер, который виджет может принять, сохраняя при этом правильную работу и корректное отображение.
Однако в некоторых странных случаях виджету может быть выделено меньше места, чем он запросил, а во многих случаях виджету может быть выделено больше места, чем он запросил.
Если запрос размера в заданном направлении равен -1 (не задано), то вместо него используется «естественный» запрос размера виджета.
Запрос размера, установленный здесь, не включает никакие отступы от свойств GtkWidget margin-left, margin-right, margin-top и margin-bottom, но включает в себя практически все другие отступы или свойства границы, установленные любым подклассом GtkWidget.
Параметры
widget | виджет GtkWidget | |
width | ширина, которую | |
height | высота, которую |
gtk_widget_list_mnemonic_labels ()
GList *
gtk_widget_list_mnemonic_labels (GtkWidget *widget); Возвращает новый выделенный список виджетов, обычно меток, для которых этот виджет является целью мнемоники (см., например, gtk_label_set_mnemonic_widget()).
Виджеты в списке не имеют отдельных ссылок. Если вы хотите перебрать список и выполнить действия, связанные с обратными вызовами, которые могут уничтожить виджеты, вы должны сначала вызвать g_list_foreach (result,
(GFunc)g_object_ref, NULL), а затем освободить все виджеты после этого.
Параметры
widget |
Возвращает
список мнемонических меток; освободите этот список с помощью g_list_free() после завершения работы с ним.
[element-type GtkWidget][transfer container]
gtk_widget_add_mnemonic_label ()
void gtk_widget_add_mnemonic_label (GtkWidget *widget,GtkWidget *label);
Добавляет виджет в список мнемонических меток для этого виджета. (См. gtk_widget_list_mnemonic_labels()). Обратите внимание, что список мнемонических меток для виджета очищается при уничтожении виджета, поэтому вызывающий абонент должен убедиться, что также обновил свое внутреннее состояние в этот момент, используя подключение к сигналу “destroy” или слабое уведомление.
gtk_widget_remove_mnemonic_label ()
void gtk_widget_remove_mnemonic_label (GtkWidget *widget,GtkWidget *label);
Удаляет виджет из списка мнемонических меток для этого виджета. (См. gtk_widget_list_mnemonic_labels()). Виджет должен был быть предварительно добавлен в список с помощью gtk_widget_add_mnemonic_label().
Параметры
widget | ||
label | a GtkWidget который был ранее установлен как мнемоническая метка для |
gtk_widget_error_bell ()
void
gtk_widget_error_bell (GtkWidget *widget); Уведомляет пользователя об ошибке, связанной с вводом, в этом виджете. Если параметр “gtk-error-bell” равен TRUE, он вызывает gdk_surface_beep(), в противном случае он ничего не делает.
Обратите внимание, что эффект gdk_surface_beep() может быть настроен множеством способов в зависимости от бэкэнда окон и используемой среды рабочего стола или диспетчера окон.
Параметры
widget |
gtk_widget_keynav_failed ()
gboolean gtk_widget_keynav_failed (GtkWidget *widget,GtkDirectionType direction);
Эта функция должна вызываться всякий раз, когда навигация по клавиатуре в пределах одного виджета достигает границы. Функция излучает сигнал “keynav-failed” для виджета, и его возвращаемое значение должно интерпретироваться аналогично возвращаемому значению gtk_widget_child_focus():
Когда возвращается TRUE, оставайтесь в виджете, неудачная навигация по клавиатуре допустима и/или нет места, куда мы можем/должны переместить фокус.
Когда возвращается FALSE, вызывающий абонент должен продолжить навигацию по клавиатуре за пределами виджета, например, вызвав gtk_widget_child_focus() для верхнего уровня виджета.
Обработчик ::keynav-failed по умолчанию возвращает FALSE для GTK_DIR_TAB_FORWARD и GTK_DIR_TAB_BACKWARD. Для других значений GtkDirectionType он возвращает TRUE.
Всякий раз, когда обработчик по умолчанию возвращает TRUE, он также вызывает gtk_widget_error_bell(), чтобы уведомить пользователя о неудачной навигации по клавиатуре.
Случаем использования для предоставления собственной реализации ::keynav-failed (путем подключения к ней или переопределения) будет ряд виджетов GtkEntry, где пользователь должен иметь возможность перемещаться по всему ряду с помощью клавиш курсора, как это известно, например, из пользовательских интерфейсов, требующих ввода лицензионных ключей.
Параметры
widget | ||
direction | направление перемещения фокуса |
Возвращает
TRUE если остановка навигации по клавиатуре в порядке, FALSE если излучающий виджет должен попытаться обработать попытку навигации по клавиатуре в его родительском контейнере(ах).
gtk_widget_get_tooltip_markup ()
const char *
gtk_widget_get_tooltip_markup (GtkWidget *widget); Получает содержимое подсказки для widget, установленное с помощью gtk_widget_set_tooltip_markup().
Параметры
widget |
Возвращает
текст подсказки.
[nullable]
gtk_widget_set_tooltip_markup ()
void gtk_widget_set_tooltip_markup (GtkWidget *widget,const char *markup);
Устанавливает markup как содержимое подсказки, которая размечена с помощью языка разметки текста Pango.
Эта функция позаботится об установке “has-tooltip” в качестве побочного эффекта и обработчика по умолчанию для сигнала “query-tooltip”.
См. также свойство “tooltip-markup” и gtk_tooltip_set_markup().
Параметры
widget | ||
markup | содержимое подсказки для | [nullable] |
gtk_widget_get_tooltip_text ()
const char *
gtk_widget_get_tooltip_text (GtkWidget *widget); Получает содержимое подсказки для widget .
Если подсказка для widget была установлена с помощью gtk_widget_set_tooltip_markup(), эта функция вернет экранированный текст.
Параметры
widget |
Возвращает
текст подсказки.
[nullable]
gtk_widget_set_tooltip_text ()
void gtk_widget_set_tooltip_text (GtkWidget *widget,const char *text);
Устанавливает text в качестве содержимого всплывающей подсказки.
Если text содержит разметку, она будет экранирована.
Эта функция позаботится об установке “has-tooltip” в качестве побочного эффекта и о обработчике по умолчанию для сигнала “query-tooltip”.
См. также свойство “tooltip-text” и gtk_tooltip_set_text().
Параметры
widget | ||
text | содержимое всплывающей подсказки для | [nullable] |
gtk_widget_get_has_tooltip ()
gboolean
gtk_widget_get_has_tooltip (GtkWidget *widget); Возвращает текущее значение свойства has-tooltip. Подробнее см. “has-tooltip”.
Параметры
widget |
Возвращаемое значение
текущее значение has-tooltip для widget .
gtk_widget_set_has_tooltip ()
void gtk_widget_set_has_tooltip (GtkWidget *widget,gboolean has_tooltip);
Устанавливает свойство has-tooltip для widget на значение has_tooltip . Подробнее см. “has-tooltip”.
Параметры
widget | ||
has_tooltip | имеет ли |
gtk_widget_trigger_tooltip_query ()
void
gtk_widget_trigger_tooltip_query (GtkWidget *widget); Вызывает запрос всплывающей подсказки на экране, где расположен toplevel окна widget.
Параметры
widget |
gtk_widget_get_allocated_width ()
int
gtk_widget_get_allocated_width (GtkWidget *widget); Возвращает ширину, которая в настоящее время выделена для widget .
Параметры
widget | запрашиваемый виджет |
Возвращаемое значение
ширина widget
gtk_widget_get_allocated_height ()
int
gtk_widget_get_allocated_height (GtkWidget *widget); Возвращает высоту, которая в настоящее время выделена для widget .
Параметры
widget | запрашиваемый виджет |
Возвращаемое значение
высота widget
gtk_widget_get_allocation ()
void gtk_widget_get_allocation (GtkWidget *widget,GtkAllocation *allocation);
Возвращает выделение виджета.
Обратите внимание, при реализации контейнера макета: выделение виджета будет его «откорректированным» выделением, то есть родительский виджет обычно вызывает gtk_widget_size_allocate() с выделением, а затем это выделение корректируется (например, для обработки отступов и выравнивания) перед присвоением виджету. gtk_widget_get_allocation() возвращает откорректированное выделение, которое фактически было присвоено виджету. Откорректированное выделение гарантированно полностью содержится в выделении, заданном с помощью gtk_widget_size_allocate().
Таким образом, контейнер макета гарантирует, что его дочерние элементы остаются внутри заданных границ, но не гарантирует, что они имеют ровно те границы, которые задал контейнер.
Параметры
widget | ||
allocation | указатель на GtkAllocation для копирования. | [out] |
gtk_widget_get_allocated_baseline ()
int
gtk_widget_get_allocated_baseline (GtkWidget *widget); Возвращает линию основания, которая в настоящее время выделена для widget . Эта функция предназначена для использования при реализации обработчиков для функции GtkWidgetClass.snapshot() и при выделении дочерних виджетов в GtkWidgetClass.size_allocate().
Параметры
widget | запрашиваемый виджет |
Возвращаемое значение
линия основания widget , или -1, если нет
gtk_widget_get_width ()
int
gtk_widget_get_width (GtkWidget *widget); Возвращает ширину содержимого виджета, переданную в его реализацию size-allocate. Это размер, который следует использовать в GtkWidgetClass.snapshot(). Для событий указателя см. gtk_widget_contains().
Параметры
widget |
Возвращаемое значение
Ширина widget
gtk_widget_get_height ()
int
gtk_widget_get_height (GtkWidget *widget); Возвращает высоту содержимого виджета, переданную в его реализацию size-allocate. Это размер, который следует использовать в GtkWidgetClass.snapshot(). Для событий указателя см. gtk_widget_contains().
Параметры
widget |
Возвращаемое значение
Высота widget
gtk_widget_get_size ()
int gtk_widget_get_size (GtkWidget *widget,GtkOrientation orientation);
Возвращает ширину или высоту содержимого виджета, в зависимости от orientation . Это эквивалентно вызову gtk_widget_get_width() для GTK_ORIENTATION_HORIZONTAL или gtk_widget_get_height() для GTK_ORIENTATION_VERTICAL, но может быть использован при написании ориентационно-независимого кода, например, при реализации виджетов GtkOrientable.
Параметры
widget | ||
orientation | запрашиваемая ориентация |
Возвращаемое значение
Размер widget в orientation .
gtk_widget_compute_bounds ()
gboolean gtk_widget_compute_bounds (GtkWidget *widget,GtkWidget *target,graphene_rect_t *out_bounds);
Вычисляет границы widget в системе координат target. ВНИМАНИЕ: Объясните, что такое «границы».
Если операция выполнена успешно, возвращается TRUE. Если у widget нет границ или границы не могут быть выражены в системе координат target (например, если оба виджета находятся в разных окнах), возвращается FALSE и bounds устанавливается в нулевой прямоугольник.
Допустимо, чтобы widget и target были одним и тем же виджетом.
Параметры
Возвращает
TRUE если границы можно вычислить
gtk_widget_compute_transform ()
gboolean gtk_widget_compute_transform (GtkWidget *widget,GtkWidget *target,graphene_matrix_t *out_transform);
Вычисляет матрицу, подходящую для описания преобразования из системы координат widget в систему координат target.
Параметры
widget | виджет GtkWidget | |
target | целевой виджет, к которому будет применяться матрица преобразования | |
out_transform | место для хранения конечного преобразования. | [out caller-allocates] |
Возвращает
TRUE если преобразование можно вычислить, FALSE в противном случае. Преобразование не может быть вычислено в некоторых случаях, например, когда widget и target не имеют общего предка. В этом случае out_transform устанавливается в единичную матрицу.
gtk_widget_compute_point ()
gboolean gtk_widget_compute_point (GtkWidget *widget,GtkWidget *target,const graphene_point_t *point,graphene_point_t *out_point);
Преобразует заданную point в координатах widget в координаты, относительные к системе координат target. Для выполнения этой операции оба виджета должны иметь общий корень.
Параметры
Возвращает
TRUE если точку можно определить, FALSE при ошибке. В этом случае в out_point хранится 0.
gtk_widget_contains ()
gboolean gtk_widget_contains (GtkWidget *widget,double x,double y);
Проверяет, содержится ли точка с координатами (x, y) в widget.
Координаты (x, y) должны быть в координатах виджета, поэтому (0, 0) предполагается как верхний левый угол области содержимого widget.
Параметры
widget | запрашиваемый виджет | |
x | координата X для проверки, относительно начала координат | |
y | координата Y для проверки, относительно начала координат |
Возвращает
TRUE если widget содержит (x, y).
gtk_widget_pick ()
GtkWidget * gtk_widget_pick (GtkWidget *widget,double x,double y,GtkPickFlags flags);
Ищет потомка widget (включая сам widget), ближайшего к экрану в точке (x, y). Точка должна быть задана в координатах виджета, поэтому (0, 0) предполагается как верхний левый угол области содержимого widget.
Обычно виджеты возвращают NULL, если заданная координата не содержится в widget, проверка которой выполняется с помощью gtk_widget_contains(). В противном случае они рекурсивно пытаются найти потомка, который не возвращает NULL. Однако виджеты могут настроить свой алгоритм выбора.
Эта функция используется на верхнем уровне для определения виджета под курсором мыши для целей выделения при наведении и передачи событий.
Параметры
widget | запрашиваемый виджет | |
x | координата X для проверки, относительно начала координат | |
y | координата Y для проверки, относительно начала координат | |
flags | Флаги, влияющие на то, что выбирается |
Возвращает
Потомок виджета в заданных координатах или NULL, если нет.
[nullable][transfer none]
gtk_widget_get_can_focus ()
gboolean
gtk_widget_get_can_focus (GtkWidget *widget); Определяет, может ли фокус ввода войти в widget или в любой из его дочерних элементов.
См. gtk_widget_set_focusable().
Параметры
widget | виджет GtkWidget |
Возвращает
TRUE если фокус ввода может войти в widget, FALSE в противном случае
gtk_widget_set_can_focus ()
void gtk_widget_set_can_focus (GtkWidget *widget,gboolean can_focus);
Указывает, может ли виджет получить фокус ввода или его дочерние элементы.
Приложения должны установить can_focus в FALSE для того, чтобы отметить виджет как предназначенный только для использования указателем/сенсорным экраном.
Обратите внимание, что can_focus имеет значение TRUE — это лишь одно из необходимых условий для получения фокуса. Виджет также должен быть чувствительным и фокусируемым, и не иметь предка, отмеченного как не фокусируемый, чтобы получить фокус ввода.
См. gtk_widget_grab_focus() для фактического установления фокуса ввода на виджете.
Параметры
widget | ||
can_focus | может ли виджет или его дочерние элементы получить фокус ввода |
gtk_widget_get_focusable ()
gboolean
gtk_widget_get_focusable (GtkWidget *widget); Определяет, может ли widget получить фокус ввода. См. gtk_widget_set_focusable().
Параметры
widget |
Возвращает
TRUE если widget может получить фокус ввода, FALSE в противном случае
gtk_widget_set_focusable ()
void gtk_widget_set_focusable (GtkWidget *widget,gboolean focusable);
Указывает, может ли widget получить фокус ввода.
Реализации виджетов должны установить focusable в TRUE в функции init(), если они хотят получать ввод с клавиатуры.
Обратите внимание, что focusable имеет значение TRUE — это лишь одно из необходимых условий для получения фокуса. Виджет также должен быть чувствительным и фокусируемым, и не иметь предка, отмеченного как не фокусируемый, чтобы получить фокус ввода.
См. gtk_widget_grab_focus() для фактического установления фокуса ввода на виджете.
Параметры
widget | ||
focusable | может ли |
gtk_widget_get_focus_on_click ()
gboolean
gtk_widget_get_focus_on_click (GtkWidget *widget); Возвращает, должен ли виджет получить фокус при нажатии мышью. См. gtk_widget_set_focus_on_click().
Параметры
widget |
Возвращает
TRUE если виджет должен получить фокус при нажатии мышью.
gtk_widget_set_focus_on_click ()
void gtk_widget_set_focus_on_click (GtkWidget *widget,gboolean focus_on_click);
Устанавливает, должен ли виджет получать фокус при нажатии мышью. Отключение захвата фокуса при клике полезно в таких местах, как панели инструментов, где вы не хотите удалять фокус с клавиатуры из основной области приложения.
Параметры
widget | ||
focus_on_click | должен ли виджет получить фокус при нажатии мышью |
gtk_widget_get_focus_child ()
GtkWidget *
gtk_widget_get_focus_child (GtkWidget *widget); Возвращает текущий дочерний элемент, имеющий фокус у widget.
Параметры
widget |
Возвращает
Текущий дочерний элемент с фокусом у widget или NULL в случае, если элемент с фокусом не задан.
[nullable][transfer none]
gtk_widget_set-focus-child ()
void gtk_widget_set_focus_child (GtkWidget *widget,GtkWidget *child);
Устанавливает child в качестве текущего дочернего элемента с фокусом у widget. Предыдущий дочерний элемент с фокусом будет сброшен.
Эта функция подходит только для реализации виджетов. Если вы хотите, чтобы определенный виджет получил фокус ввода, вызовите gtk_widget_grab_focus() на нём.
Параметры
widget | ||
child | прямой дочерний виджет | [nullable] |
gtk_widget_get_can_target ()
gboolean
gtk_widget_get_can_target (GtkWidget *widget); Запрашивает, может ли widget быть целью событий указателя.
Параметры
widget |
Возвращает
TRUE если widget может получать события указателя
gtk_widget-set-can-target ()
void gtk_widget_set_can_target (GtkWidget *widget,gboolean can_target);
Устанавливает, может ли widget быть целью событий указателя.
Параметры
widget | ||
can_target | может ли данный виджет получать события указателя |
gtk_widget_get_sensitive ()
gboolean
gtk_widget_get_sensitive (GtkWidget *widget); Возвращает чувствительность виджета (в смысле возвращает значение, установленное с помощью gtk_widget_set_sensitive()).
Однако эффективная чувствительность виджета определяется как его собственной чувствительностью, так и чувствительностью родительского виджета. См. gtk_widget_is_sensitive().
Параметры
widget |
Возвращает
TRUE если виджет чувствителен
gtk_widget_get_visible ()
gboolean
gtk_widget_get_visible (GtkWidget *widget); Определяет, является ли виджет видимым. Если вы хотите учесть, является ли родительский виджет также видимым, используйте gtk_widget_is_visible() вместо этого.
Эта функция не проверяет, скрыт ли виджет каким-либо образом.
Параметры
widget |
Возвращает
TRUE если виджет видимый
gtk_widget_is_visible ()
gboolean
gtk_widget_is_visible (GtkWidget *widget); Определяет, отмечены ли виджет и все его родительские элементы как видимые.
Эта функция не проверяет, скрыт ли виджет каким-либо образом.
См. также gtk_widget_get_visible() и gtk_widget_set_visible()
Параметры
widget |
Возвращает
TRUE если виджет и все его родительские элементы видимы
gtk_widget_set_visible ()
void gtk_widget_set_visible (GtkWidget *widget,gboolean visible);
Устанавливает состояние видимости widget. Обратите внимание, что установка в TRUE не означает, что виджет фактически отображается, см. gtk_widget_get_visible().
Эта функция просто вызывает gtk_widget_show() или gtk_widget_hide(), но удобнее использовать, когда видимость виджета зависит от какого-либо условия.
Параметры
widget | ||
visible | должен ли виджет отображаться или нет |
gtk_widget_set_state_flags ()
void gtk_widget_set_state_flags (GtkWidget *widget,GtkStateFlags flags,gboolean clear);
Эта функция предназначена для использования в реализациях виджетов. Включает значения флагов в текущем состоянии виджета (нечувствительный, предварительно выделенный и т.д.).
Эта функция принимает значения GTK_STATE_FLAG_DIR_LTR и GTK_STATE_FLAG_DIR_RTL, но игнорирует их. Если вы хотите установить направление виджета, используйте gtk_widget_set_direction().
Параметры
widget | ||
flags | Флаги состояния для включения | |
clear | Очистить состояние перед включением |
gtk_widget_unset_state_flags ()
void gtk_widget_unset_state_flags (GtkWidget *widget,GtkStateFlags flags);
Эта функция предназначена для использования в реализациях виджетов. Отключает значения флагов для текущего состояния виджета (нечувствительный, предварительно выделенный и т.д.). См. gtk_widget_set_state_flags().
Параметры
widget | ||
flags | Флаги состояния для отключения |
gtk_widget_get_state_flags ()
GtkStateFlags
gtk_widget_get_state_flags (GtkWidget *widget); Возвращает состояние виджета в виде набора флагов. Стоит отметить, что возвращается эффективное состояние GTK_STATE_FLAG_INSENSITIVE, т. е. также на основе нечувствительности родителя, даже если widget сам по себе чувствителен.
Также обратите внимание, что если вам нужен способ получить GtkStateFlags для передачи методу GtkStyleContext, вы должны обратиться к gtk_style_context_get_state().
Параметры
widget |
Возвращает
Флаги состояния виджета
gtk_widget_has-default ()
gboolean
gtk_widget_has_default (GtkWidget *widget); Определяет, является ли widget текущим виджетом по умолчанию в пределах его верхнего уровня.
Параметры
widget |
Возвращает
TRUE если widget является текущим виджетом по умолчанию в пределах его верхнего уровня, FALSE в противном случае
gtk_widget_has_focus ()
gboolean
gtk_widget_has_focus (GtkWidget *widget); Определяет, имеет ли виджет глобальный фокус ввода. См. gtk_widget_is_focus(), чтобы увидеть разницу между наличием глобального фокуса ввода и наличием фокуса только внутри верхнего уровня.
Параметры
widget |
Возвращает
TRUE если виджет имеет глобальный фокус ввода.
gtk_widget_has-visible-focus ()
gboolean
gtk_widget_has_visible_focus (GtkWidget *widget); Определяет, должен ли виджет отображать визуальное указание на то, что он имеет глобальный фокус ввода. Это функция-удобство, которая учитывает, должно ли в данный момент отображаться указание фокуса в окне верхнего уровня widget. Дополнительную информацию об указании фокуса см. в gtk_window_get_focus_visible().
Чтобы узнать, имеет ли виджет глобальный фокус ввода, используйте gtk_widget_has_focus().
Параметры
widget |
Возвращает
TRUE если виджет должен отображать "прямоугольник фокуса"
gtk_widget_is-drawable ()
gboolean
gtk_widget_is_drawable (GtkWidget *widget); Определяет, может ли к widget быть отрисовано. Виджет может быть отрисован, если он отображен и видим.
Параметры
widget |
Возвращает
TRUE если widget может быть отрисован, FALSE в противном случае
gtk_widget_set-receives-default ()
void gtk_widget_set_receives_default (GtkWidget *widget,gboolean receives_default);
Указывает, будет ли widget обрабатывать виджет по умолчанию в пределах его верхнего уровня при наличии фокуса, даже если другим виджетом является виджет по умолчанию.
Параметры
widget | ||
receives_default | указывает, может ли |
gtk_widget_get_receives_default ()
gboolean
gtk_widget_get_receives_default (GtkWidget *widget); Определяет, является ли widget всегда виджетом по умолчанию в своем верхнем уровне, когда у него есть фокус, даже если другим виджетом является виджет по умолчанию.
См. gtk_widget_set_receives_default().
Параметры
widget |
Возвращает
TRUE если widget действует как виджет по умолчанию при фокусе, FALSE в противном случае
gtk_widget_get_realized ()
gboolean
gtk_widget_get_realized (GtkWidget *widget); Определяет, реализован ли widget.
Параметры
widget |
Возвращает
TRUE если widget реализован, FALSE в противном случае
gtk_widget_get_mapped ()
gboolean
gtk_widget_get_mapped (GtkWidget *widget); отображен ли виджет.
Параметры
widget |
Возвращает
TRUE если виджет отображен, FALSE в противном случае.
gtk_widget_get_opacity ()
double
gtk_widget_get_opacity (GtkWidget *widget); Возвращает запрашиваемую непрозрачность для этого виджета. См. gtk_widget_set_opacity().
Параметры
widget |
Возвращает
запрашиваемую непрозрачность для этого виджета.
gtk_widget_set_opacity ()
void gtk_widget_set_opacity (GtkWidget *widget,double opacity);
Запрашивает, чтобы widget был отображен с частичной непрозрачностью, при этом значение непрозрачности 0 соответствует полной прозрачности, а 1 — полной непрозрачности. (Значения непрозрачности ограничиваются диапазоном [0, 1]).
Непрозрачность работает как для виджетов верхнего уровня, так и для дочерних виджетов, хотя есть некоторые ограничения: для виджетов верхнего уровня применение непрозрачности зависит от возможностей системы окон. В X11 это имеет какой-либо эффект только на X-дисплеях с диспетчером компоновки, см. gdk_display_is_composited(). На Windows и Wayland это должно всегда работать, хотя установка непрозрачности окна после отображения окна может привести к некоторым мерцаниям.
Обратите внимание, что непрозрачность наследуется через включение — если вы установите верхний уровень с частичной непрозрачностью, все его содержимое будет отображаться полупрозрачным, поскольку в конечном итоге он отображается на этом верхнем уровне. Само значение непрозрачности не наследуется дочерними виджетами (потому что это сделает виджеты глубже в иерархии всё более прозрачными). Вследствие этого, GtkPopovers и другие GtkNative виджеты со своим поверхностью будут использовать свое собственное значение непрозрачности, и, следовательно, по умолчанию будут отображаться непрозрачно, даже если они подключены к верхнему уровню, который полупрозрачный.
Параметры
widget | ||
opacity | желаемая непрозрачность, от 0 до 1 |
gtk_widget_get_overflow ()
GtkOverflow
gtk_widget_get_overflow (GtkWidget *widget); Возвращает значение, установленное с помощью gtk_widget_set_overflow().
Параметры
widget |
Возвращает
Переполнение виджета.
gtk_widget_set_overflow ()
void gtk_widget_set_overflow (GtkWidget *widget,GtkOverflow overflow);
Устанавливает, как widget обрабатывает содержимое, которое рисуется за пределами области содержимого виджета. Подробности см. в определении GtkOverflow.
Это свойство предназначено для реализации виджетов и не должно использоваться кодом приложения.
Значение по умолчанию — GTK_OVERFLOW_VISIBLE.
Параметры
widget | ||
overflow | желаемое переполнение |
gtk_widget_measure ()
void gtk_widget_measure (GtkWidget *widget,GtkOrientation orientation,int for_size,int *minimum,int *natural,int *minimum_baseline,int *natural_baseline);
Измеряет widget в ориентации orientation и для заданного for_size . Например, если orientation — GTK_ORIENTATION_HORIZONTAL, а for_size — 300, эта функция вычислит минимальную и естественную ширину widget, если ей назначена высота 300 пикселей.
См. раздел управления геометрией GtkWidget для получения дополнительных сведений о реализации GtkWidgetClass.measure().
Параметры
widget | Экземпляр GtkWidget | |
orientation | ориентация для измерения | |
for_size | Размер для противоположной | |
minimum | место для хранения минимального размера или | [out][optional] |
natural | место для хранения естественного размера или | [out][optional] |
minimum_baseline | место для хранения положения базовой линии для минимального размера или | [out][optional] |
natural_baseline | место для хранения положения базовой линии для естественного размера или | [out][optional] |
gtk_widget_snapshot_child ()
void gtk_widget_snapshot_child (GtkWidget *widget,GtkWidget *child,GtkSnapshot *snapshot);
Когда виджет получает вызов функции снимка, он должен отправить синтетические вызовы GtkWidgetClass.snapshot() всем своим дочерним виджетам. Данная функция предоставляет удобный способ сделать это. Виджет, получив вызов своей функции GtkWidgetClass.snapshot(), вызывает gtk_widget_snapshot_child() для каждого дочернего виджета, передавая в него snapshot, полученное виджетом.
gtk_widget_snapshot_child() заботится о переводе происхождения snapshot и определении, нужно ли делать снимок дочернего виджета.
Для дочерних виджетов, реализующих GtkNative, эта функция ничего не делает.
Параметры
widget | виджет GtkWidget | |
child | дочерний виджет | |
snapshot | GtkSnapshot, переданный виджету. В частности, не должно быть сделано никаких вызовов |
gtk_widget_get_next_sibling ()
GtkWidget *
gtk_widget_get_next_sibling (GtkWidget *widget); Возвращает следующего брата виджета.
Этот API предназначен в первую очередь для реализации виджетов.
Параметры
widget | виджет GtkWidget |
Возвращаемое значение
Следующий брат виджета.
[transfer none][nullable]
gtk_widget_get_prev_sibling ()
GtkWidget *
gtk_widget_get_prev_sibling (GtkWidget *widget); Возвращает предыдущего брата виджета.
Этот API предназначен в первую очередь для реализации виджетов.
Параметры
widget | виджет GtkWidget |
Возвращаемое значение
Предыдущий брат виджета.
[transfer none][nullable]
gtk_widget_get_first_child ()
GtkWidget *
gtk_widget_get_first_child (GtkWidget *widget); Возвращает первого дочернего виджета.
Этот API предназначен в первую очередь для реализации виджетов.
Параметры
widget | виджет GtkWidget |
Возвращаемое значение
Первый дочерний виджет.
[transfer none][nullable]
gtk_widget_get_last_child ()
GtkWidget *
gtk_widget_get_last_child (GtkWidget *widget); Возвращает последний дочерний виджет.
Этот API предназначен в первую очередь для реализации виджетов.
Параметры
widget | виджет GtkWidget |
Возвращаемое значение
Последний дочерний виджет.
[transfer none][nullable]
gtk_widget_insert_before ()
void gtk_widget_insert_before (GtkWidget *widget,GtkWidget *parent,GtkWidget *next_sibling);
Вставляет widget в список дочерних виджетов parent.
Он будет размещён перед next_sibling, или в конце, если next_sibling является NULL.
После вызова этой функции gtk_widget_get_next_sibling(widget) вернёт next_sibling.
Если parent уже задан как родительский виджет для widget, эта функция также может использоваться для переупорядочивания widget в списке дочерних виджетов parent.
Этот API предназначен в первую очередь для реализации виджетов; если вы просто используете виджет, вы *обязаны* использовать его собственный API для добавления дочерних элементов.
gtk_widget_insert_after ()
void gtk_widget_insert_after (GtkWidget *widget,GtkWidget *parent,GtkWidget *previous_sibling);
Вставляет widget в список дочерних виджетов parent.
Он будет размещён после previous_sibling, или в начале, если previous_sibling является NULL.
После вызова этой функции gtk_widget_get_prev_sibling(widget) вернёт previous_sibling.
Если parent уже задан как родительский виджет для widget, эта функция также может использоваться для переупорядочивания widget в списке дочерних виджетов parent.
Этот API предназначен в первую очередь для реализации виджетов; если вы просто используете виджет, вы *обязаны* использовать его собственный API для добавления дочерних элементов.
gtk_widget_set_layout_manager ()
void gtk_widget_set_layout_manager (GtkWidget *widget,GtkLayoutManager *layout_manager);
Устанавливает делегат менеджера компоновки, который предоставляет реализацию для измерения и распределения дочерних элементов widget.
Параметры
widget | виджет GtkWidget | |
layout_manager | менеджер компоновки GtkLayoutManager. | [nullable][transfer full] |
gtk_widget_get_layout_manager ()
GtkLayoutManager *
gtk_widget_get_layout_manager (GtkWidget *widget); Возвращает менеджер компоновки, установленный с помощью gtk_widget_set_layout_manager().
Параметры
widget | объект GtkWidget |
gtk_widget_should_layout ()
gboolean
gtk_widget_should_layout (GtkWidget *widget); Возвращает значение, указывающее, должен ли widget участвовать в измерении и распределении места его родительского элемента. Это FALSE для невидимых дочерних элементов, а также для дочерних элементов, имеющих собственную поверхность.
Параметры
widget | виджет |
Возвращает
TRUE если дочерний элемент должен быть включён в измерение и распределение
gtk_widget_get_css_name ()
const char *
gtk_widget_get_css_name (GtkWidget *self); Возвращает имя CSS, используемое для self .
Параметры
self | объект GtkWidget |
Возвращает
имя CSS.
[transfer none]
gtk_widget_add_css_class ()
void gtk_widget_add_css_class (GtkWidget *widget,const char *css_class);
Добавляет css_class к widget . После вызова этой функции, стиль widget будет соответствовать css_class в соответствии с правилами сопоставления CSS.
Параметры
widget | объект GtkWidget | |
css_class | Класс стиля, добавляемый к |
gtk_widget_remove_css_class ()
void gtk_widget_remove_css_class (GtkWidget *widget,const char *css_class);
Удаляет css_class из widget . После этого, стиль widget больше не будет соответствовать css_class .
Параметры
widget | объект GtkWidget | |
css_class | Класс стиля для удаления из |
gtk_widget_has_css_class ()
gboolean gtk_widget_has_css_class (GtkWidget *widget,const char *css_class);
Возвращает, применён ли в настоящее время css_class к widget .
Параметры
widget | объект GtkWidget | |
css_class | Класс CSS стиля, без ведущей точки, используемой для обозначения классов стилей |
Возвращает
TRUE если css_class в настоящее время применён к widget , FALSE в противном случае.
gtk_widget_get_css_classes ()
char **
gtk_widget_get_css_classes (GtkWidget *widget); Возвращает список классов CSS, применённых к widget .
Параметры
widget | объект GtkWidget |
Возвращает
список классов CSS, завершённый нулём, которые в данный момент применяются к widget . Возвращённый список можно освободить, используя g_strfreev().
[transfer full]
gtk_widget_set_css_classes ()
void gtk_widget_set_css_classes (GtkWidget *widget,const char **classes);
Очищает все классы CSS, применённые к widget , и заменяет их на classes .
Параметры
widget | объект GtkWidget | |
classes | Список классов CSS, завершённый нулём, которые нужно применить к | [transfer none][array zero-terminated=1] |
gtk_widget_get_style_context ()
GtkStyleContext *
gtk_widget_get_style_context (GtkWidget *widget); Возвращает контекст стиля, связанный с widget . Гарантируется, что возвращаемый объект будет одинаковым в течение всего жизненного цикла widget .
Параметры
widget | объект GtkWidget |
Возвращает
объект GtkStyleContext. Эта память принадлежит widget и не должна освобождаться.
[transfer none]
gtk_widget_class_get_css_name ()
const char *
gtk_widget_class_get_css_name (GtkWidgetClass *widget_class); Получает имя, используемое этим классом для сопоставления в коде CSS. Смотрите gtk_widget_class_set_css_name() для получения подробной информации.
Параметры
widget_class | класс, для которого нужно установить имя |
Возвращает
имя CSS данного класса
gtk_widget_class_set_css-name ()
void gtk_widget_class_set_css_name (GtkWidgetClass *widget_class,const char *name);
Устанавливает имя, которое будет использоваться для сопоставления виджетов в CSS.
Если эта функция не вызывается для данного класса, используется имя, установленное в родительском классе. По умолчанию GtkWidget использует имя "widget".
Параметры
widget_class | класс, для которого нужно установить имя | |
name | используемое имя |
gtk_requisition_new ()
GtkRequisition *
gtk_requisition_new (void); Выделяет новую структуру GtkRequisition и инициализирует её элементы нулями.
Возвращает
новую пустую структуру GtkRequisition. Выделенную структуру GtkRequisition нужно освободить с помощью gtk_requisition_free().
gtk_requisition_copy ()
GtkRequisition *
gtk_requisition_copy (const GtkRequisition *requisition); Копирует GtkRequisition.
Параметры
requisition |
Возвращает
копию requisition
gtk_requisition_free ()
void
gtk_requisition_free (GtkRequisition *requisition); Освобождает GtkRequisition.
Параметры
requisition |
gtk_widget_get_request_mode ()
GtkSizeRequestMode
gtk_widget_get_request_mode (GtkWidget *widget); Получает, предпочитает ли виджет компоновку «высота по ширине» или «ширина по высоте».
Виджеты GtkBin обычно передают предпочтение своего дочернего элемента, контейнерным виджетам необходимо запросить что-то либо в контексте своих дочерних элементов, либо в контексте их возможностей размещения.
Параметры
widget | a GtkWidget экземпляр |
Возвращает
GtkSizeRequestMode, предпочитаемый widget .
gtk_widget_get_preferred_size ()
void gtk_widget_get_preferred_size (GtkWidget *widget,GtkRequisition *minimum_size,GtkRequisition *natural_size);
Получает минимальный и естественный размеры виджета, принимая во внимание предпочтение виджета для управления высотой по ширине.
Это используется для получения подходящего размера контейнерными виджетами, которые не накладывают никаких ограничений на размещение дочерних элементов. Его можно использовать для вывода размеров верхнего уровня окна и меню, а также дочерних виджетов в контейнерах с произвольной формой, таких как GtkLayout.
Обращаться с осторожностью. Обратите внимание, что естественная высота виджета «высота по ширине» обычно будет меньше, чем минимальная высота, поскольку требуемая высота для естественной ширины обычно меньше, чем требуемая высота для минимальной ширины.
Используйте gtk_widget_measure(), если вы хотите поддерживать выравнивание по основанию.
Параметры
widget | a GtkWidget экземпляр | |
minimum_size | место для хранения минимального размера или | [out][allow-none] |
natural_size | место для хранения естественного размера или | [out][allow-none] |
gtk_distribute_natural_allocation ()
int gtk_distribute_natural_allocation (int extra_space,guint n_requested_sizes,GtkRequestedSize *sizes);
Распределяет extra_space по дочерним sizes, сначала приводя меньшие дочерние элементы к естественному размеру.
Остальное пространство будет добавлено к члену minimum_size структуры GtkRequestedSize. Если все размеры достигнут своего естественного значения, то остальное пространство возвращается.
Параметры
extra_space | Дополнительное пространство для перераспределения среди дочерних элементов после вычитания минимальных размеров и любого отступа дочерних элементов из общего размещения | |
n_requested_sizes | Количество запросов для размещения в размещении | |
sizes | Массив структур с указателем на клиентскую часть и минимальным/естественным размером в направлении размещения. |
Возвращает
Остаток от extra_space после перераспределения пространства дочерним sizes .
gtk_widget_get_halign ()
GtkAlign
gtk_widget_get_halign (GtkWidget *widget); Получает значение свойства “halign”.
Из соображений обратной совместимости этот метод никогда не вернет GTK_ALIGN_BASELINE, а вместо этого преобразует его в GTK_ALIGN_FILL. Выравнивание по основанию не поддерживается для горизонтального выравнивания.
Параметры
widget |
Возвращает
горизонтальное выравнивание widget
gtk_widget_set_halign ()
void gtk_widget_set_halign (GtkWidget *widget,GtkAlign align);
Устанавливает горизонтальное выравнивание widget . См. свойство “halign”.
Параметры
widget | ||
align | горизонтальное выравнивание |
gtk_widget_get_valign ()
GtkAlign
gtk_widget_get_valign (GtkWidget *widget); Получает значение свойства “valign”.
Параметры
widget |
Возвращает
вертикальное выравнивание widget
gtk_widget_set_valign ()
void gtk_widget_set_valign (GtkWidget *widget,GtkAlign align);
Устанавливает вертикальное выравнивание widget . См. свойство “valign”.
Параметры
widget | ||
align | вертикальное выравнивание |
gtk_widget_get_margin_start ()
int
gtk_widget_get_margin_start (GtkWidget *widget); Получает значение свойства “margin-start”.
Параметры
widget |
Возвращает
начальный отступ widget
gtk_widget_set_margin_start ()
void gtk_widget_set_margin_start (GtkWidget *widget,int margin);
Устанавливает начальный отступ widget . См. свойство “margin-start”.
Параметры
widget | ||
margin | начальный отступ |
gtk_widget_get_margin_end ()
int
gtk_widget_get_margin_end (GtkWidget *widget); Получает значение свойства “margin-end”.
Параметры
widget |
Возвращает
Крайний отступ widget
gtk_widget_set_margin_end ()
void gtk_widget_set_margin_end (GtkWidget *widget,int margin);
Устанавливает крайний отступ widget . См. свойство “margin-end”.
Параметры
widget | ||
margin | крайний отступ |
gtk_widget_get_margin_top ()
int
gtk_widget_get_margin_top (GtkWidget *widget); Получает значение свойства “margin-top”.
Параметры
widget |
Возвращает
Верхний отступ widget
gtk_widget_set_margin_top ()
void gtk_widget_set_margin_top (GtkWidget *widget,int margin);
Устанавливает верхний отступ widget . См. свойство “margin-top”.
Параметры
widget | ||
margin | верхний отступ |
gtk_widget_get_margin_bottom ()
int
gtk_widget_get_margin_bottom (GtkWidget *widget); Получает значение свойства “margin-bottom”.
Параметры
widget |
Возвращает
Нижний отступ widget
gtk_widget_set_margin_bottom ()
void gtk_widget_set_margin_bottom (GtkWidget *widget,int margin);
Устанавливает нижний отступ widget . См. свойство “margin-bottom”.
Параметры
widget | ||
margin | нижний отступ |
gtk_widget_get_hexpand ()
gboolean
gtk_widget_get_hexpand (GtkWidget *widget); Получает, хочет ли виджет дополнительного горизонтального пространства. Когда пользователь изменяет размер GtkWindow, виджеты с expand=TRUE обычно получают дополнительное пространство. Например, список, область прокрутки или документ в вашем окне часто устанавливаются для расширения.
Контейнеры должны использовать gtk_widget_compute_expand(), а не эту функцию, чтобы узнать, установлен ли флаг expand для виджета или любого из его дочерних элементов. Если какой-либо дочерний элемент виджета хочет расшириться, родитель также может запросить расширение.
Эта функция рассматривает только собственный флаг hexpand виджета, а не вычисляет, хочет ли расшириться всё дерево виджетов, корнем которого является этот виджет.
Параметры
widget | виджет |
Возвращает
установлен ли флаг hexpand
gtk_widget_set_hexpand ()
void gtk_widget_set_hexpand (GtkWidget *widget,gboolean expand);
Устанавливает, хочет ли виджет дополнительного горизонтального пространства. Когда пользователь изменяет размер GtkWindow, виджеты с expand=TRUE обычно получают дополнительное пространство. Например, список, область прокрутки или документ в вашем окне часто устанавливаются для расширения.
Вызовите эту функцию, чтобы установить флаг expand, если вы хотите, чтобы ваш виджет увеличился по горизонтали, когда в окне есть дополнительное место.
По умолчанию виджеты автоматически расширяются, если любой из их дочерних элементов хочет расшириться. (Чтобы узнать, будет ли виджет автоматически расширяться с учетом его текущих дочерних элементов и состояния, вызовите gtk_widget_compute_expand(). Контейнер может определить, как расширяемость дочерних элементов влияет на расширение контейнера, переопределив виртуальный метод compute_expand в GtkWidget.).
Явное задание hexpand с помощью этой функции переопределит автоматическое поведение расширения.
Эта функция заставляет виджет расширяться или не расширяться независимо от дочерних элементов. Переопределение происходит потому, что gtk_widget_set_hexpand() устанавливает свойство hexpand-set (см. gtk_widget_set_hexpand_set()), что приводит к использованию значения hexpand виджета, а не к просмотру дочерних элементов и состояния виджета.
Параметры
widget | виджет | |
expand | расширять ли |
gtk_widget_get_hexpand_set ()
gboolean
gtk_widget_get_hexpand_set (GtkWidget *widget); Получает, использовалась ли gtk_widget_set_hexpand() для явного задания флага expand для этого виджета.
Если hexpand установлен, то он переопределяет любое вычисленное значение expand на основе дочерних виджетов. Если hexpand не установлен, то значение expand зависит от того, хотят ли какие-либо дочерние элементы виджета расшириться.
Есть немного причин использовать эту функцию, но она здесь для полноты и согласованности.
Параметры
widget | виджет |
Возвращает
был ли hexpand явно установлен
gtk_widget_set_hexpand_set ()
void gtk_widget_set_hexpand_set (GtkWidget *widget,gboolean set);
Устанавливает, будет ли использоваться флаг hexpand (см. gtk_widget_get_hexpand()).
Свойство hexpand-set будет устанавливаться автоматически при вызове gtk_widget_set_hexpand() для установки hexpand, поэтому наиболее вероятной причиной использования этой функции будет сброс явного флага expand.
Если hexpand установлен, то он переопределяет любое вычисленное значение expand на основе дочерних виджетов. Если hexpand не установлен, то значение expand зависит от того, хотят ли какие-либо дочерние элементы виджета расшириться.
Есть немного причин использовать эту функцию, но она здесь для полноты и согласованности.
Параметры
widget | виджет | |
set | значение для свойства hexpand-set |
gtk_widget_get_vexpand ()
gboolean
gtk_widget_get_vexpand (GtkWidget *widget); Получает, хочет ли виджет дополнительного вертикального пространства.
См. gtk_widget_get_hexpand() для получения дополнительной информации.
Параметры
widget | виджет |
Возвращает
установлен ли флаг vexpand
gtk_widget_set_vexpand ()
void gtk_widget_set_vexpand (GtkWidget *widget,gboolean expand);
Устанавливает, хочет ли виджет дополнительного вертикального пространства.
См. gtk_widget_set_hexpand() для получения дополнительной информации.
Параметры
widget | виджет | |
expand | расширять ли |
gtk_widget_get_vexpand_set ()
gboolean
gtk_widget_get_vexpand_set (GtkWidget *widget); Получает значение, указывающее, был ли явно установлен флаг расширения с помощью gtk_widget_set_vexpand() для данного виджета.
См. gtk_widget_get_hexpand_set() для получения более подробной информации.
Параметры
widget | виджет |
Возвращает
значение, указывающее, был ли явно установлен флаг vexpand
gtk_widget_set_vexpand_set ()
void gtk_widget_set_vexpand_set (GtkWidget *widget,gboolean set);
Устанавливает, будет ли использоваться флаг vexpand (см. gtk_widget_get_vexpand()).
См. gtk_widget_set_hexpand_set() для получения более подробной информации.
Параметры
widget | виджет | |
set | значение свойства vexpand-set |
gtk_widget_compute_expand ()
gboolean gtk_widget_compute_expand (GtkWidget *widget,GtkOrientation orientation);
Вычисляет, должен ли контейнер предоставлять данному виджету дополнительное пространство при возможности. Контейнеры должны использовать эту функцию, а не проверять gtk_widget_get_hexpand() или gtk_widget_get_vexpand().
Эта функция уже проверяет видимость виджета, поэтому проверять видимость отдельно не нужно. Невидимые виджеты не расширяются.
Вычисленное значение расширения использует либо установленное значение расширения непосредственно на виджете, либо, если оно не установлено явно, виджет может расширяться, если некоторые из его дочерних элементов расширяются.
Параметры
widget | виджет | |
orientation | направление расширения |
Возвращает
значение, указывающее, должен ли корневой элемент дерева виджетов расширяться
gtk_widget_init_template ()
void
gtk_widget_init_template (GtkWidget *widget); Создаёт и инициализирует дочерние виджеты, определённые в шаблонах. Эта функция должна вызываться в инициализаторе экземпляра для любого класса, который назначил себе шаблон с помощью gtk_widget_class_set_template().
Важно вызывать эту функцию в инициализаторе экземпляра подкласса GtkWidget, а не в GObject.constructed() или GObject.constructor() по двум причинам.
Одна причина заключается в том, что, как правило, производные виджеты предполагают, что составные виджеты родительского класса были созданы в их инициализаторах экземпляров.
Другая причина заключается в том, что при вызове g_object_new() для виджета с составными шаблонами важно построить составные виджеты до задания свойств конструктора. Свойства, передаваемые g_object_new(), должны иметь приоритет над свойствами, заданными в частном XML-шаблоне.
Параметры
widget | объект GtkWidget |
gtk_widget_class_set_template ()
void gtk_widget_class_set_template (GtkWidgetClass *widget_class,GBytes *template_bytes);
Этот метод должен вызываться во время инициализации класса для указания XML-файла GtkBuilder, который будет использоваться для расширения виджета.
Для удобства также предоставлена функция gtk_widget_class_set_template_from_resource().
Обратите внимание, что любой класс, который устанавливает шаблоны, должен вызывать gtk_widget_init_template() в инициализаторе экземпляра виджета.
Параметры
widget_class | объект GtkWidgetClass | |
template_bytes | объект GBytes, содержащий XML-код GtkBuilder |
gtk_widget_class_set_template_from_resource ()
void gtk_widget_class_set_template_from_resource (GtkWidgetClass *widget_class,const char *resource_name);
Функция-обёртка для вызова gtk_widget_class_set_template().
Обратите внимание, что любой класс, который устанавливает шаблоны, должен вызывать gtk_widget_init_template() в инициализаторе экземпляра виджета.
Параметры
widget_class | объект GtkWidgetClass | |
resource_name | имя ресурса, из которого загружается шаблон |
gtk_widget_get_template_child ()
GObject * gtk_widget_get_template_child (GtkWidget *widget,GType widget_type,const char *name);
Извлечение объекта, созданного из XML-шаблона для widget_type в данном экземпляре widget.
Будут возвращены только дочерние элементы, которые были ранее объявлены с помощью gtk_widget_class_bind_template_child_full() или одного из его вариантов.
Эта функция предназначена только для использования кодом, который является внутренним для widget_type, который объявил дочерний элемент, и предназначена для языковых библиотек, которые не могут легко использовать смещения структуры GObject.
Параметры
widget | объект GtkWidget | |
widget_type | Тип GType для получения дочернего элемента шаблона | |
name | «Идентификатор» дочернего элемента, определённый в XML-шаблоне |
Возвращает
объект, созданный в XML-шаблоне с id name.
[transfer none]
gtk_widget_class_bind_template_child()
#define gtk_widget_class_bind_template_child(widget_class, TypeName, member_name)
Связывает дочерний виджет, определённый в шаблоне, с widget_class.
Это макрос-обёртка для функции gtk_widget_class_bind_template_child_full().
Этот макрос будет использовать смещение member_name внутри структуры экземпляра TypeName.
Параметры
widget_class | объект GtkWidgetClass | |
TypeName | имя типа этого виджета | |
member_name | имя члена экземпляра в структуре экземпляра для |
gtk_widget_class_bind_template-child_internal()
#define gtk_widget_class_bind_template_child_internal(widget_class, TypeName, member_name)
Связывает дочерний виджет, определённый в шаблоне, с widget_class, а также делает его доступным как внутренний дочерний элемент в GtkBuilder под именем member_name.
Этот макрос-обёртка для функции gtk_widget_class_bind_template_child_full().
Этот макрос будет использовать смещение member_name внутри структуры экземпляра TypeName.
Параметры
widget_class | объект GtkWidgetClass | |
TypeName | имя типа в формате CamelCase | |
member_name | имя члена экземпляра в структуре экземпляра для |
gtk_widget_class_bind_template_child_private()
#define gtk_widget_class_bind_template_child_private(widget_class, TypeName, member_name)
Связывает виджет-потомка, определённый в шаблоне, с widget_class.
Эта макрокоманда — это удобная обертка вокруг функции gtk_widget_class_bind_template_child_full().
Эта макрокоманда будет использовать смещение member_name внутри структуры данных для TypeName (она использует G_PRIVATE_OFFSET(), поэтому структура с данными должна быть добавлена с помощью G_ADD_PRIVATE()).
Параметры
widget_class | Класс GtkWidgetClass | |
TypeName | имя типа этого виджета | |
member_name | имя частного члена экземпляра в структуре данных для |
gtk_widget_class_bind_template_child_internal_private()
#define gtk_widget_class_bind_template_child_internal_private(widget_class, TypeName, member_name)
Связывает виджет-потомка, определённый в шаблоне, с widget_class, а также делает его доступным как внутреннего потомка в GtkBuilder под именем member_name.
Эта макрокоманда — это удобная обертка вокруг функции gtk_widget_class_bind_template_child_full().
Эта макрокоманда будет использовать смещение member_name внутри структуры данных для TypeName.
Параметры
widget_class | Класс GtkWidgetClass | |
TypeName | имя типа в формате CamelCase | |
member_name | имя частного члена экземпляра в структуре данных для |
gtk_widget_class_bind_template_child_full ()
void gtk_widget_class_bind_template_child_full (GtkWidgetClass *widget_class,const char *name,gboolean internal_child,gssize struct_offset);
Автоматически назначит объект, объявленный в шаблоне XML класса, для установки в местоположение на только что созданной структуре данных экземпляра, или, альтернативно, доступного через gtk_widget_get_template_child().
Структура может указывать либо на общедоступную часть экземпляра, тогда для struct_offset следует использовать G_STRUCT_OFFSET(WidgetType, member), либо на частную структуру, тогда следует использовать G_PRIVATE_OFFSET(WidgetType, member).
Будет автоматически создаваться явное сильное обращение на время жизненного цикла вашего экземпляра. Оно будет автоматически высвобождено, когда GObjectClass.dispose() выполняется на вашем экземпляре, а если указан struct_offset, который не равен 0, то автоматическое расположение в вашей публичной или приватной структуре экземпляра будет установлено на NULL. Однако вы можете получить доступ к автоматической ссылке на потомка в первый раз, когда в ваших классах запускается GObjectClass.dispose(), или, как альтернатива, в GtkWidgetClass.destroy().
Если указан internal_child, GtkBuildableIface.get_internal_child() будет автоматически реализовано классом GtkWidget, поэтому нет необходимости реализовывать его вручную.
Используйте макрокоманды-обертки gtk_widget_class_bind_template_child(), gtk_widget_class_bind_template_child_internal(), gtk_widget_class_bind_template_child_private() и gtk_widget_class_bind_template_child_internal_private(), возможно, это будет удобнее.
Обратите внимание, что это должно вызываться из инициализатора класса композитного виджета после вызова gtk_widget_class_set_template().
Параметры
widget_class | Класс GtkWidgetClass | |
name | «Идентификатор» потомка, определённый в XML-шаблоне | |
internal_child | Определяет, должен ли потомок быть доступен как «внутренний потомок», когда этот класс используется в XML GtkBuilder | |
struct_offset | Смещение в структуре данных (общедоступная или приватная) составного виджета, куда должна быть установлена автоматическая ссылка на потомка, или 0, чтобы не назначать ссылку. |
gtk_widget_class_bind_template_callback()
#define gtk_widget_class_bind_template_callback(widget_class, callback)
Связывает функцию обратного вызова, определённую в шаблоне, с widget_class.
Эта макрокоманда — это удобная обертка вокруг функции gtk_widget_class_bind_template_callback_full(). Она не поддерживается после использования gtk_widget_class_set_template_scope() на widget_class.
Параметры
widget_class | Класс GtkWidgetClass | |
callback | символ обратного вызова |
gtk_widget_class_bind_template_callback_full ()
void gtk_widget_class_bind_template_callback_full (GtkWidgetClass *widget_class,const char *callback_name,GCallback callback_symbol);
Объявляет callback_symbol для обработки callback_name из шаблона XML, определённого для widget_type. Эта функция не поддерживается после использования gtk_widget_class_set_template_scope() на widget_class. См. gtk_builder_cscope_add_callback_symbol().
Обратите внимание, что это должно вызываться из инициализатора класса композитного виджета после вызова gtk_widget_class_set_template().
Параметры
widget_class | Класс GtkWidgetClass | |
callback_name | Имя обратного вызова, как ожидается в XML шаблоне | |
callback_symbol | Символ обратного вызова. | [scope async] |
gtk_widget_class_set_template_scope ()
void gtk_widget_class_set_template_scope (GtkWidgetClass *widget_class,GtkBuilderScope *scope);
Для использования в языковых связках, это переопределит используемый по умолчанию GtkBuilderScope при разборе XML GtkBuilder из данных шаблона этого класса.
Обратите внимание, что это должно вызываться из инициализатора класса композитного виджета после вызова gtk_widget_class_set_template().
Параметры
widget_class | Класс GtkWidgetClass | |
scope | Объект GtkBuilderScope для использования при загрузке шаблона класса. | [transfer none] |
gtk_widget_observe_children ()
GListModel *
gtk_widget_observe_children (GtkWidget *widget); Возвращает GListModel для отслеживания дочерних элементов widget.
Вызов этой функции включит дополнительный внутренний учет для отслеживания дочерних элементов и отправки сигналов в возвращаемой модели списка. Это может значительно замедлить работу.
Приложения должны стараться избегать вызова этой функции из-за замедления.
Параметры
widget |
Возвращает
a GListModel для отслеживания дочерних элементов widget.
[transfer full][attributes element-type=GtkWidget]
gtk_widget_observe_controllers ()
GListModel *
gtk_widget_observe_controllers (GtkWidget *widget); Возвращает GListModel для отслеживания GtkEventControllers widget.
Вызов этой функции включит дополнительный внутренний учет для отслеживания контроллеров и отправки сигналов в возвращаемой модели списка. Это может значительно замедлить работу.
Приложения должны стараться избегать вызова этой функции из-за замедления.
Параметры
widget |
Возвращает
a GListModel для отслеживания контроллеров widget.
[transfer full][attributes element-type=GtkEventController]
gtk_widget_insert_action_group ()
void gtk_widget_insert_action_group (GtkWidget *widget,const char *name,GActionGroup *group);
Вставляет group в widget. Дочерние элементы widget, которые реализуют GtkActionable, могут затем быть связаны с действиями в group, установив их «action-name» на prefix.action-name.
Обратите внимание, что наследование определено для отдельных действий. То есть, даже если вы вставите группу с префиксом prefix, действия с тем же префиксом по-прежнему будут унаследованы от родителя, если только группа не содержит действие с тем же именем.
Если group является NULL, ранее вставленная группа для name удаляется из widget.
Параметры
widget | ||
name | префикс для действий в | |
group | a GActionGroup, или | [allow-none] |
gtk_widget_activate_action ()
gboolean gtk_widget_activate_action (GtkWidget *widget,const char *name,const char *format_string,...);
Ищет действие в группах действий, связанных с widget и его предками, и активирует его.
Это обертка вокруг gtk_widget_activate_action_variant(), которая создает вариант args в соответствии с format_string.
Параметры
widget | ||
name | имя действия для активации | |
format_string | Строка формата GVariant для аргументов или | |
... | аргументы, как указано в строке формата |
Возвращает
TRUE если действие было активировано, FALSE если действие не существует.
gtk_widget_activate_action_variant ()
gboolean gtk_widget_activate_action_variant (GtkWidget *widget,const char *name,GVariant *args);
Ищет действие в группах действий, связанных с widget и его предками, и активирует его.
Если действие находится в группе действий, добавленной с помощью gtk_widget_insert_action_group(), ожидается, что name будет иметь префикс, который использовался при вставке группы.
Аргументы должны соответствовать ожидаемому типу параметра действий, как возвращается g_action_get_parameter_type().
[rename-to gtk_widget_activate_action]
Параметры
widget | ||
name | имя действия для активации | |
args | параметры для использования, или | [allow-none] |
Возвращает
TRUE если действие было активировано, FALSE если действие не существует.
gtk_widget_activate_default ()
void
gtk_widget_activate_default (GtkWidget *widget); Активировать действие default.activate из widget.
Параметры
widget |
GtkWidgetActionActivateFunc ()
void (*GtkWidgetActionActivateFunc) (GtkWidget *widget,const char *action_name,GVariant *parameter);
Тип callback-функций, используемых для активации действий, установленных с помощью gtk_widget_class_install_action().
parameter должен соответствовать parameter_type действия.
Параметры
widget | виджет, которому принадлежит действие | |
action_name | имя действия | |
parameter | параметр для активации |
gtk_widget_class_install_action ()
void gtk_widget_class_install_action (GtkWidgetClass *widget_class,const char *action_name,const char *parameter_type,GtkWidgetActionActivateFunc activate);
Это должно вызываться во время инициализации класса для указания действий, которые будут добавлены для всех экземпляров этого класса.
Действия, установленные этой функцией, являются бессостоятельными. Единственное их состояние — включены они или нет.
Параметры
widget_class | ||
action_name | имя действия с префиксом, например, "clipboard.paste" | |
parameter_type | тип параметра, или | [nullable] |
activate | callback для использования при активации действия. | [scope call] |
gtk_widget_class_install_property_action ()
void gtk_widget_class_install_property_action (GtkWidgetClass *widget_class,const char *action_name,const char *property_name);
Устанавливает действие с именем action_name на widget_class и связывает его состояние со значением свойства property_name.
Эта функция выполнит несколько проверок корректности выбранного свойства через property_name. В частности, свойство должно существовать, быть читаемым, записываемым и не быть только конструкторским. Существуют также ограничения на тип заданного свойства, оно должно быть булевым, целым, беззнаковым целым, двойным или строковым. Если какое-либо из этих условий не выполняется, будет выведено критическое предупреждение, и действие не будет добавлено.
Тип состояния действия соответствует типу свойства.
Если свойство булево, действие не будет иметь параметров и переключит значение свойства. В противном случае действие будет иметь параметр того же типа, что и свойство.
Параметры
widget_class | ||
action_name | имя действия | |
property_name | имя свойства в экземплярах |
gtk_widget_class_query_action ()
gboolean gtk_widget_class_query_action (GtkWidgetClass *widget_class,guint index_,GType *owner,const char **action_name,const GVariantType **parameter_type,const char **property_name);
Запрашивает действия, которые были установлены для класса виджета с помощью gtk_widget_class_install_action() во время инициализации класса.
Обратите внимание, что эта функция также вернёт действия, определённые родительскими классами. Вы можете определить их, посмотрев на owner.
Параметры
widget_class | ||
index_ | позиция запрашиваемого действия | |
owner | место для возврата типа, где было определено действие. | [out] |
action_name | место для возврата имени действия. | [out] |
parameter_type | место для возврата типа параметра. | [out] |
property_name | место для возврата имени свойства. | [out] |
Возвращает
TRUE если действие найдено, FALSE если index_ вне диапазона
gtk_widget_action_set_enabled ()
void gtk_widget_action_set_enabled (GtkWidget *widget,const char *action_name,gboolean enabled);
Включает или отключает действие, установленное с помощью gtk_widget_class_install_action().
Параметры
widget | ||
action_name | имя действия, например, "clipboard.paste" | |
enabled | включено ли действие сейчас |
Типы и значения
GtkWidget
typedef struct _GtkWidget GtkWidget;
struct GtkWidgetClass
struct GtkWidgetClass {
GInitiallyUnownedClass parent_class;
/* basics */
void (* show) (GtkWidget *widget);
void (* hide) (GtkWidget *widget);
void (* map) (GtkWidget *widget);
void (* unmap) (GtkWidget *widget);
void (* realize) (GtkWidget *widget);
void (* unrealize) (GtkWidget *widget);
void (* root) (GtkWidget *widget);
void (* unroot) (GtkWidget *widget);
void (* size_allocate) (GtkWidget *widget,
int width,
int height,
int baseline);
void (* state_flags_changed) (GtkWidget *widget,
GtkStateFlags previous_state_flags);
void (* direction_changed) (GtkWidget *widget,
GtkTextDirection previous_direction);
/* size requests */
GtkSizeRequestMode (* get_request_mode) (GtkWidget *widget);
void (* measure) (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline);
/* Mnemonics */
gboolean (* mnemonic_activate) (GtkWidget *widget,
gboolean group_cycling);
/* explicit focus */
gboolean (* grab_focus) (GtkWidget *widget);
gboolean (* focus) (GtkWidget *widget,
GtkDirectionType direction);
void (* set_focus_child) (GtkWidget *widget,
GtkWidget *child);
/* keyboard navigation */
void (* move_focus) (GtkWidget *widget,
GtkDirectionType direction);
gboolean (* keynav_failed) (GtkWidget *widget,
GtkDirectionType direction);
gboolean (* query_tooltip) (GtkWidget *widget,
int x,
int y,
gboolean keyboard_tooltip,
GtkTooltip *tooltip);
void (* compute_expand) (GtkWidget *widget,
gboolean *hexpand_p,
gboolean *vexpand_p);
void (* css_changed) (GtkWidget *widget,
GtkCssStyleChange *change);
void (* system_setting_changed) (GtkWidget *widget,
GtkSystemSetting settings);
void (* snapshot) (GtkWidget *widget,
GtkSnapshot *snapshot);
gboolean (* contains) (GtkWidget *widget,
double x,
double y);
};
Члены
| Сигнал, излучаемый, когда виджет показан | |
| Сигнал, излучаемый, когда виджет скрыт. | |
| Сигнал, излучаемый, когда виджет будет отображён, то есть когда виджет видим (что контролируется с помощью | |
| Сигнал, излучаемый, когда виджет будет не отображён, что означает, что либо он, либо любой из его родительских виджетов до верхнего виджета были скрыты. | |
| Сигнал, излучаемый, когда виджет связан с GdkSurface, что означает, что | |
| Сигнал, излучаемый, когда GdkSurface, связанный с виджетом, уничтожен, что означает, что | |
| Вызывается, когда виджет добавляется к виджету GtkRoot. Должен производить цепочечную подстановку | |
| Вызывается, когда виджет будет удалён из его виджета GtkRoot. Должен производить цепочечную подстановку | |
| Вызывается для установки распределения, если у виджета нет менеджера компоновки. | |
| Сигнал, излучаемый, когда состояние виджета изменяется, см. | |
| Сигнал, излучаемый, когда направление текста виджета изменяется. | |
| Вызывается для получения режима запроса, если у виджета нет менеджера компоновки. Это позволяет виджету указать контейнеру-родителю, предпочитает ли он размещаться в режиме | |
| Вызывается для получения минимального и естественного размера виджета, если у виджета нет менеджера компоновки. В зависимости от параметра orientation, переданное for_size может интерпретироваться как ширина или высота. Виджету никогда не будет выделено меньше, чем его минимальный размер. | |
| Активирует | |
| Приводит к тому, что | |
| Функция vfunc для | |
| Устанавливает фокусированный дочерний виджет. Должен производить цепочечную подстановку | |
| Сигнал, излучаемый при запросе изменения фокуса | |
| Сигнал, излучаемый, если навигация по клавиатуре завершается ошибкой. | |
| Сигнал, излучаемый, когда «has-tooltip» имеет значение | |
| Вычисляет, должен ли контейнер предоставлять этому виджету дополнительное пространство при возможности. | |
| Функция vfunc, вызываемая, когда CSS, используемый виджетом, был изменён. Виджеты должны затем сбросить свои кэши, зависящие от CSS, и соответственно поставить в очередь операции изменения размера или перерисовки. Реализация по умолчанию позаботится об этом для всех стандартных свойств CSS, поэтому реализации должны производить цепочечную подстановку. | |
| Излучается, когда изменилось системное значение. Должен производить цепочечную подстановку. | |
| Функция vfunc, вызываемая, когда требуется создать новый снимок виджета. | |
| Функция vfunc для |
GtkRequisition
typedef struct {
int width;
int height;
} GtkRequisition;
A GtkRequisition представляет желаемый размер виджета. Дополнительная информация приведена в разделе управления геометрией виджета GtkWidget.
Члены
int | желаемая ширина виджета | |
int | желаемая высота виджета |
GtkAllocation
typedef GdkRectangle GtkAllocation;
A GtkAllocation of a widget represents a region allocated to the widget by its parent. It is a subregion of its parent’s allocation. See GtkWidget’s geometry management section for more information.
enum GtkTextDirection
Направления чтения текста.
Members
GTK_TEXT_DIR_NONE | Отсутствие направления. | |
GTK_TEXT_DIR_LTR | Направление чтения слева направо. | |
GTK_TEXT_DIR_RTL | Направление чтения справа налево. |
enum GtkPickFlags
Флаги, влияющие на поведение gtk_widget_pick()
Members
GTK_PICK_DEFAULT | Поведение по умолчанию, включают виджеты, которые получают события | |
GTK_PICK_INSENSITIVE | Включают нечувствительные виджеты | |
GTK_PICK_NON_TARGETABLE | Включают виджеты, помеченные как нетаргетируемые. См. “can-target” |
enum GtkOverflow
Определяет, как обрабатывать содержимое, выходящее за пределы заданной области, например, с помощью gtk_widget_set_overflow(). Данный свойство моделируется по аналогии со свойством CSS overflow, но реализовано лишь частично.
Members
GTK_OVERFLOW_VISIBLE | Изменений не происходит. Содержимое отображается в заданном положении. | |
GTK_OVERFLOW_HIDDEN | Содержимое обрезается до границ области. Содержимое, выходящее за пределы области, не отображается и с ним нельзя взаимодействовать. |
enum GtkSizeRequestMode
Указывает предпочтение для управления геометрией «высота для ширины» или «ширина для высоты».
Members
GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH | Предпочтение управления геометрией «высота для ширины» | |
GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT | Предпочтение управления геометрией «ширина для высоты» | |
GTK_SIZE_REQUEST_CONSTANT_SIZE | Не производить обмен «высота для ширины» или «ширина для высоты» |
struct GtkRequestedSize
struct GtkRequestedSize {
gpointer data;
int minimum_size;
int natural_size;
};
Представляет запрос объекта экрана в заданном направлении. Они в основном используются в реализациях контейнеров при выделении естественного размера для дочерних элементов, вызывающих gtk_distribute_natural_allocation().
Members
gpointer | Указатель клиента | |
int | Минимальный размер, необходимый для выделения в данном направлении | |
int | Естественный размер для выделения в данном направлении |
enum GtkAlign
Управляет тем, как виджет обрабатывает дополнительное пространство в одном измерении (x или y).
Выравнивание имеет значение только если виджет получает «слишком большое» выделение, например, если вы упаковали виджет с свойством “hexpand” внутри GtkBox, то виджет может получить дополнительное пространство. Например, если у вас значок 16x16 внутри пространства 32x32, значок может быть масштабирован и растянут, центрирован или расположен с одной стороны пространства.
Обратите внимание, что в горизонтальном контексте GTK_ALIGN_START и GTK_ALIGN_END интерпретируются относительно направления текста.
GTK_ALIGN_BASELINE поддержка является необязательной для контейнеров и виджетов, и она поддерживается только для вертикального выравнивания. Если она не поддерживается дочерним элементом или контейнером, она обрабатывается как GTK_ALIGN_FILL.
Members
GTK_ALIGN_FILL | Растянуть, чтобы заполнить всё пространство, если возможно, центрировать, если нет осмысленного способа растянуть | |
GTK_ALIGN_START | Привязать к левой или верхней стороне, оставляя пространство справа или снизу | |
GTK_ALIGN_END | Привязать к правой или нижней стороне, оставляя пространство слева или сверху | |
GTK_ALIGN_CENTER | Центрировать естественную ширину виджета внутри выделения | |
GTK_ALIGN_BASELINE | Выровнять виджет по основанию. См. GtkWidget |
Подробное описание свойств
Свойство “can-focus”
“can-focus” gboolean
Может ли виджет или любой из его потомков принимать фокус ввода.
Это свойство предназначено для установки реализациями виджетов, как правило, в их функции инициализации экземпляра.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “can-target”
“can-target” gboolean
Может ли виджет получать события указателя.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “css-classes”
“css-classes” GStrv
Список классов CSS, примененных к этому виджету.
Владелец: GtkWidget
Флаги: Чтение / Запись
Свойство “css-name”
“css-name” char *
Имя этого виджета в дереве CSS.
Это свойство предназначено для установки реализациями виджетов, как правило, в их функции инициализации экземпляра.
Владелец: GtkWidget
Флаги: Чтение / Запись / Только при создании
Значение по умолчанию: NULL
Свойство “cursor”
“cursor” GdkCursor *
Курсор, используемый widget . Подробности см. в gtk_widget_set_cursor().
Владелец: GtkWidget
Флаги: Чтение / Запись
Свойство “focus-on-click”
“focus-on-click” gboolean
Должен ли виджет захватывать фокус при щелчке по нему мышью.
Это свойство актуально только для виджетов, которые могут принимать фокус.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “focusable”
“focusable” gboolean
Будет ли сам этот виджет принимать фокус ввода.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “halign”
“halign” GtkAlign
Как распределять горизонтальное пространство, если виджет получает дополнительное пространство, см. GtkAlign
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: GTK_ALIGN_FILL
Свойство “has-default”
“has-default” gboolean
Является ли виджет виджетом по умолчанию.
Владелец: GtkWidget
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “has-focus”
“has-focus” gboolean
Имеет ли виджет фокус ввода.
Владелец: GtkWidget
Флаги: Чтение
Значение по умолчанию: FALSE
Свойство “has-tooltip”
“has-tooltip” gboolean
Включает или отключает генерацию “query-tooltip” на widget . Значение TRUE указывает на то, что widget может иметь подсказку, в этом случае виджет будет запрашиваться с помощью “query-tooltip” для определения того, будет ли он предоставлять подсказку или нет.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “height-request”
“height-request” int
Переопределение запроса высоты виджета или -1, если должен использоваться естественный запрос.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство “hexpand”
“hexpand” gboolean
Следует ли расширять горизонтально. См. gtk_widget_set_hexpand().
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “hexpand-set”
“hexpand-set” gboolean
Следует ли использовать свойство “hexpand”. См. gtk_widget_get_hexpand_set().
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “layout-manager”
“layout-manager” GtkLayoutManager *
Экземпляр GtkLayoutManager, используемый для вычисления предпочтительного размера виджета и размещения его дочерних элементов.
Это свойство предназначено для установки реализациями виджетов, как правило, в их функции инициализации экземпляра.
Владелец: GtkWidget
Флаги: Чтение / Запись
Свойство “margin-bottom”
“margin-bottom” int
Поле снизу виджета.
Это свойство добавляет поле за пределами обычного запроса размера виджета, поле будет добавлено в дополнение к размеру из gtk_widget_set_size_request(), например.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: [0,32767]
Значение по умолчанию: 0
Свойство “margin-end”
“margin-end” int
Поле в конце виджета, горизонтально. Это свойство поддерживает направления текста слева направо и справа налево.
Это свойство добавляет поле за пределами обычного запроса размера виджета, поле будет добавлено в дополнение к размеру из gtk_widget_set_size_request(), например.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: [0,32767]
Значение по умолчанию: 0
Свойство “margin-start”
“margin-start” int
Поле в начале виджета, горизонтально. Это свойство поддерживает направления текста слева направо и справа налево.
Это свойство добавляет поле за пределами обычного запроса размера виджета, поле будет добавлено в дополнение к размеру из gtk_widget_set_size_request(), например.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: [0,32767]
Значение по умолчанию: 0
Свойство “margin-top”
“margin-top” int
Поле сверху виджета.
Это свойство добавляет поле за пределами обычного запроса размера виджета, поле будет добавлено в дополнение к размеру из gtk_widget_set_size_request(), например.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: [0,32767]
Значение по умолчанию: 0
Свойство “name”
“name” char *
Имя виджета.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: NULL
Свойство “opacity”
“opacity” double
Запрашиваемая непрозрачность виджета. Подробнее о непрозрачности окна см. в gtk_widget_set_opacity().
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: [0,1]
Значение по умолчанию: 1
Свойство “overflow”
“overflow” GtkOverflow
Как обрабатывается содержимое за пределами области содержимого виджета.
Это свойство предназначено для установки реализациями виджетов, как правило, в их функции инициализации экземпляра.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: GTK_OVERFLOW_VISIBLE
Свойство “parent”
“parent” GtkWidget *
Родительский виджет этого виджета.
Владелец: GtkWidget
Флаги: Чтение
Свойство “receives-default”
“receives-default” gboolean
Если TRUE, виджет получит действие по умолчанию, когда он находится в фокусе.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “root”
“root” GtkRoot *
Виджет GtkRoot дерева виджетов, содержащего этот виджет, или NULL, если виджет не содержится в корневом виджете.
Владелец: GtkWidget
Флаги: Чтение
Свойство “scale-factor”
“scale-factor” int
Коэффициент масштабирования виджета. Подробнее о масштабировании виджетов см. в gtk_widget_get_scale_factor().
Владелец: GtkWidget
Флаги: Чтение
Допустимые значения: >= 1
Значение по умолчанию: 1
Свойство “sensitive”
“sensitive” gboolean
Реагирует ли виджет на ввод.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “tooltip-markup”
“tooltip-markup” char *
Устанавливает текст подсказки в виде заданной строки, которая размечается с помощью языка разметки текста Pango. См. также gtk_tooltip_set_markup().
Это свойство удобства, которое позаботится о том, чтобы подсказка отображалась, если заданная строка не NULL: “has-tooltip” будет автоматически установлено в TRUE, и будет обработан “query-tooltip” в обработчике сигналов по умолчанию.
Обратите внимание, что если установлены как “tooltip-text”, так и “tooltip-markup”, последнее выигрывает.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: NULL
Свойство “tooltip-text”
“tooltip-text” char *
Устанавливает текст всплывающей подсказки заданной строкой.
См. также gtk_tooltip_set_text().
Это свойство для удобства, оно позаботится о выводе всплывающей подсказки, если заданная строка не NULL: “has-tooltip” будет автоматически установлено в TRUE, и обработчик сигнала “query-tooltip” будет выполнен по умолчанию.
Обратите внимание, что если установлены как “tooltip-text”, так и “tooltip-markup”, то последняя установленная побеждает.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: NULL
Свойство “valign”
“valign” GtkAlign
Как распределить вертикальное пространство, если виджет получает дополнительное пространство, см. GtkAlign
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: GTK_ALIGN_FILL
Свойство “vexpand”
“vexpand” gboolean
Развернуть ли виджет по вертикали. См. gtk_widget_set_vexpand().
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “vexpand-set”
“vexpand-set” gboolean
Использовать ли свойство “vexpand”. См. gtk_widget_get_vexpand_set().
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “visible”
“visible” gboolean
Видимость виджета.
Владелец: GtkWidget
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
Свойство “width-request”
“width-request” int
Переопределение запроса ширины виджета, или -1, если нужно использовать естественный запрос.
Владелец: GtkWidget
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Подробное описание сигналов
Сигнал “destroy”
void user_function (GtkWidget *object, gpointer user_data)
Сигнализирует, что все держатели ссылки на виджет должны освободить эту ссылку. Может привести к финализации виджета, если все ссылки будут освобождены.
Этот сигнал не подходит для сохранения состояния виджета.
Параметры
объект | объект, получивший сигнал | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Без хуков
Сигнал “direction-changed”
void user_function (GtkWidget *widget, GtkTextDirection previous_direction, gpointer user_data)
Сигнал ::direction-changed генерируется, когда направление текста виджета изменяется.
Параметры
виджет | объект, на котором генерируется сигнал | |
previous_direction | предыдущее направление текста | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “hide”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::hide генерируется, когда widget скрывается, например, с помощью gtk_widget_hide().
Параметры
виджет | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “keynav-failed”
gboolean user_function (GtkWidget *widget, GtkDirectionType direction, gpointer user_data)
Генерируется, если навигация по клавиатуре завершилась неудачно. Подробнее см. gtk_widget_keynav_failed().
Параметры
виджет | объект, получивший сигнал | |
направление | направление перемещения | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если прекращение навигации по клавиатуре разрешено, FALSE если виджет должен попробовать обработать попытку навигации по клавиатуре в своих родительских виджетах.
Флаги: Выполняется последним
Сигнал “map”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::map генерируется, когда widget будет отображен, то есть когда виджет становится видимым (управление видимостью осуществляется с помощью gtk_widget_set_visible()), а также все его родительские виджеты до верхнего уровня виджета также видимы.
Сигнал ::map можно использовать для определения того, будет ли виджет нарисован, например, он может возобновить анимацию, которая была остановлена во время генерации “unmap”.
Параметры
виджет | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “mnemonic-activate”
gboolean user_function (GtkWidget *widget, gboolean group_cycling, gpointer user_data)
Обработчик по умолчанию для этого сигнала активирует widget, если group_cycling имеет FALSE, или просто заставляет widget получить фокус, если group_cycling имеет TRUE.
Параметры
виджет | объект, получивший сигнал. | |
group_cycling |
| |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE для остановки вызова других обработчиков для события. FALSE для распространения события дальше.
Флаги: Выполняется последним
Сигнал “move-focus”
void user_function (GtkWidget *widget, GtkDirectionType direction, gpointer user_data)
Генерируется при перемещении фокуса.
Параметры
виджет | объект, получивший сигнал. | |
направление | направление перемещения фокуса | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Действие
Сигнал “query-tooltip”
gboolean user_function (GtkWidget *widget, int x, int y, gboolean keyboard_mode, GtkTooltip *tooltip, gpointer user_data)
Генерируется, когда “has-tooltip” имеет значение TRUE, а таймаут отображения подсказки истек, и курсор наведён «над» widget; или когда widget получил фокус в режиме клавиатуры.
Используя заданные координаты, обработчик сигнала должен определить, следует ли отображать подсказку для widget. В случае необходимости, должно быть возвращено значение TRUE, в противном случае - FALSE. Обратите внимание, что если keyboard_mode равно TRUE, значения x и y не определены и не должны использоваться.
Обработчик сигнала свободен манипулировать tooltip с использованием соответствующих вызовов функций.
Параметры
виджет | объект, получивший сигнал | |
x | координата x курсора, где было сгенерировано событие, относительно левой стороны | |
y | координата y курсора, где было сгенерировано событие, относительно верхней стороны | |
keyboard_mode |
| |
tooltip | структура GtkTooltip | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если tooltip должна быть отображена сейчас, FALSE в противном случае.
Флаги: Выполняется последним
Сигнал “realize”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::realize генерируется, когда widget ассоциируется с GdkSurface, что означает, что gtk_widget_realize() был вызван или виджет отображён (то есть он будет нарисован).
Параметры
виджет | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “show”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::show генерируется, когда widget отображается, например, с помощью gtk_widget_show().
Параметры
widget | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется в первую очередь
Сигнал “state-flags-changed”
void user_function (GtkWidget *widget, GtkStateFlags flags, gpointer user_data)
Сигнал ::state-flags-changed генерируется при изменении состояния виджета, см. gtk_widget_get_state_flags().
Параметры
widget | объект, получивший сигнал. | |
flags | Предыдущие флаги состояния. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется в первую очередь
Сигнал “unmap”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::unmap генерируется, когда widget будет отображаться, что означает, что либо он сам, либо любой из его родительских виджетов до верхнего уровня виджета были скрыты.
Поскольку ::unmap указывает, что виджет больше не будет отображаться, его можно использовать, например, для остановки анимации на виджете.
Параметры
widget | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется в первую очередь
Сигнал “unrealize”
void user_function (GtkWidget *widget, gpointer user_data)
Сигнал ::unrealize генерируется, когда GdkSurface, связанный с widget, уничтожается, что означает, что gtk_widget_unrealize() был вызван или виджет был скрыт (то есть он собирается скрыться).
Параметры
widget | объект, получивший сигнал. | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Выполняется в последнюю очередь
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkWidget.html