Spec-Zone.ru › GTK 4.0

GtkWidget

GtkWidget — Базовый класс для всех виджетов

Функции

gboolean gtk_widget_in_destruction ()
void gtk_widget_unparent ()
void gtk_widget_show ()
void gtk_widget_hide ()
void gtk_widget_map ()
void gtk_widget_unmap ()
void gtk_widget_realize ()
void gtk_widget_unrealize ()
void gtk_widget_queue_draw ()
void gtk_widget_queue_resize ()
void gtk_widget_queue_allocate ()
GdkFrameClock * gtk_widget_get_frame_clock ()
int gtk_widget_get_scale_factor ()
gboolean (*GtkTickCallback) ()
guint gtk_widget_add_tick_callback ()
void gtk_widget_remove_tick_callback ()
void gtk_widget_size_allocate ()
void gtk_widget_allocate ()
void gtk_widget_class_add_shortcut ()
void gtk_widget_class_add_binding ()
void gtk_widget_class_add_binding_signal ()
void gtk_widget_class_add_binding_action ()
void gtk_widget_class_set_layout_manager_type ()
GType gtk_widget_class_get_layout_manager_type ()
void gtk_widget_class_set_activate_signal ()
void gtk_widget_class_set_activate_signal_from_name ()
guint gtk_widget_class_get_activate_signal ()
gboolean gtk_widget_activate ()
gboolean gtk_widget_is_focus ()
gboolean gtk_widget_grab_focus ()
void gtk_widget_set_name ()
const char * gtk_widget_get_name ()
void gtk_widget_set_sensitive ()
void gtk_widget_set_parent ()
GtkRoot * gtk_widget_get_root ()
GtkNative * gtk_widget_get_native ()
GtkWidget * gtk_widget_get_ancestor ()
gboolean gtk_widget_is_ancestor ()
gboolean gtk_widget_translate_coordinates ()
void gtk_widget_add_controller ()
void gtk_widget_remove_controller ()
void gtk_widget_set_direction ()
GtkTextDirection gtk_widget_get_direction ()
void gtk_widget_set_default_direction ()
GtkTextDirection gtk_widget_get_default_direction ()
PangoContext * gtk_widget_create_pango_context ()
PangoContext * gtk_widget_get_pango_context ()
void gtk_widget_set_font_options ()
const cairo_font_options_t * gtk_widget_get_font_options ()
void gtk_widget_set_font_map ()
PangoFontMap * gtk_widget_get_font_map ()
PangoLayout * gtk_widget_create_pango_layout ()
GdkCursor * gtk_widget_get_cursor ()
void gtk_widget_set_cursor ()
void gtk_widget_set_cursor_from_name ()
gboolean gtk_widget_mnemonic_activate ()
void gtk_widget_class_set_accessible_role ()
GtkAccessibleRole gtk_widget_class_get_accessible_role ()
gboolean gtk_widget_child_focus ()
gboolean gtk_widget_get_child_visible ()
GtkWidget * gtk_widget_get_parent ()
GtkSettings * gtk_widget_get_settings ()
GdkClipboard * gtk_widget_get_clipboard ()
GdkClipboard * gtk_widget_get_primary_clipboard ()
GdkDisplay * gtk_widget_get_display ()
void gtk_widget_get_size_request ()
void gtk_widget_set_child_visible ()
void gtk_widget_set_size_request ()
GList * gtk_widget_list_mnemonic_labels ()
void gtk_widget_add_mnemonic_label ()
void gtk_widget_remove_mnemonic_label ()
void gtk_widget_error_bell ()
gboolean gtk_widget_keynav_failed ()
const char * gtk_widget_get_tooltip_markup ()
void gtk_widget_set_tooltip_markup ()
const char * gtk_widget_get_tooltip_text ()
void gtk_widget_set_tooltip_text ()
gboolean gtk_widget_get_has_tooltip ()
void gtk_widget_set_has-tooltip ()
void gtk_widget_trigger_tooltip_query ()
int gtk_widget_get_allocated_width ()
int gtk_widget_get_allocated_height ()
void gtk_widget_get_allocation ()
int gtk_widget_get_allocated_baseline ()
int gtk_widget_get_width ()
int gtk_widget_get_height ()
int gtk_widget_get_size ()
gboolean gtk_widget_compute_bounds ()
gboolean gtk_widget_compute_transform ()
gboolean gtk_widget_compute_point ()
gboolean gtk_widget_contains ()
GtkWidget * gtk_widget_pick ()
gboolean gtk_widget_get_can_focus ()
void gtk_widget_set_can_focus ()
END_OF_DOCUMENT_MARKER
gboolean gtk_widget_get_focusable ()
void gtk_widget_set_focusable ()
gboolean gtk_widget_get_focus_on_click ()
void gtk_widget_set_focus_on_click ()
GtkWidget * gtk_widget_get_focus_child ()
void gtk_widget_set_focus_child ()
gboolean gtk_widget_get_can_target ()
void gtk_widget_set_can_target ()
gboolean gtk_widget_get_sensitive ()
gboolean gtk_widget_is_sensitive ()
gboolean gtk_widget_get_visible ()
gboolean gtk_widget_is_visible ()
void gtk_widget_set_visible ()
void gtk_widget_set_state_flags ()
void gtk_widget_unset_state_flags ()
GtkStateFlags gtk_widget_get_state_flags ()
gboolean gtk_widget_has_default ()
gboolean gtk_widget_has_focus ()
gboolean gtk_widget_has_visible_focus ()
gboolean gtk_widget_is_drawable ()
void gtk_widget_set_receives_default ()
gboolean gtk_widget_get_receives_default ()
gboolean gtk_widget_get_realized ()
gboolean gtk_widget_get_mapped ()
double gtk_widget_get_opacity ()
void gtk_widget_set_opacity ()
GtkOverflow gtk_widget_get_overflow ()
void gtk_widget_set_overflow ()
void gtk_widget_measure ()
void gtk_widget_snapshot_child ()
GtkWidget * gtk_widget_get_next_sibling ()
GtkWidget * gtk_widget_get_prev_sibling ()
GtkWidget * gtk_widget_get_first_child ()
GtkWidget * gtk_widget_get_last_child ()
void gtk_widget_insert_before ()
void gtk_widget_insert_after ()
void gtk_widget_set_layout_manager ()
GtkLayoutManager * gtk_widget_get_layout_manager ()
gboolean gtk_widget_should_layout ()
const char * gtk_widget_get_css_name ()
void gtk_widget_add_css_class ()
void gtk_widget_remove_css_class ()
gboolean gtk_widget_has_css-class ()
char ** gtk_widget_get_css_classes ()
void gtk_widget_set_css_classes ()
GtkStyleContext * gtk_widget_get-style-context ()
const char * gtk_widget_class_get_css_name ()
void gtk_widget_class_set-css-name ()
GtkRequisition * gtk_requisition-new ()
GtkRequisition * gtk_requisition_copy ()
void gtk_requisition_free ()
GtkSizeRequestMode gtk_widget_get_request_mode ()
void gtk_widget_get_preferred_size ()
int gtk_distribute_natural_allocation ()
GtkAlign gtk_widget_get_halign ()
void gtk_widget_set_halign ()
GtkAlign gtk_widget_get_valign ()
void gtk_widget_set_valign ()
int gtk_widget_get_margin_start ()
void gtk_widget_set_margin_start ()
int gtk_widget_get_margin_end ()
void gtk_widget_set_margin_end ()
int gtk_widget_get_margin_top ()
void gtk_widget_set_margin_top ()
int gtk_widget_get_margin_bottom ()
void gtk_widget_set_margin_bottom ()
gboolean gtk_widget_get_hexpand ()
void gtk_widget_set_hexpand ()
gboolean gtk_widget_get_hexpand_set ()
void gtk_widget_set_hexpand_set ()
gboolean gtk_widget_get_vexpand ()
void gtk_widget_set_vexpand ()
gboolean gtk_widget_get_vexpand_set ()
void gtk_widget_set_vexpand_set ()
gboolean gtk_widget_compute_expand ()
void gtk_widget_init_template ()
void gtk_widget_class_set_template ()
void gtk_widget_class_set_template_from_resource ()
GObject * gtk_widget_get_template_child ()
#define gtk_widget_class_bind_template_child()
#define gtk_widget_class_bind_template_child_internal()
#define gtk_widget_class_bind_template_child_private()
#define gtk_widget_class_bind_template_child_internal_private()
void gtk_widget_class_bind_template_child_full ()
#define gtk_widget_class_bind_template_callback()
void gtk_widget_class_bind_template_callback_full ()
void gtk_widget_class_set_template_scope ()
GListModel * gtk_widget_observe_children ()
GListModel * gtk_widget_observe_controllers ()
void gtk_widget_insert_action_group ()
gboolean gtk_widget_activate_action ()
gboolean gtk_widget_activate_action_variant ()
void gtk_widget_activate_default ()
void (*GtkWidgetActionActivateFunc) ()
void gtk_widget_class_install_action ()
void gtk_widget_class_install_property_action ()
gboolean gtk_widget_class_query_action ()
void gtk_widget_action_set_enabled ()

Свойства

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 реализуется с помощью двух виртуальных методов:

  • GtkWidgetClass.get_request_mode()

  • GtkWidgetClass.measure()

При реализации управления геометрией по высоте для ширины и использовании её в реализации виджетов необходимо учитывать некоторые важные моменты.

Если вы реализуете прямой подкласс 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-allocate() не сработает. Эти функции возвращают скорректированный запрос, учитывая GtkSizeGroup, флаги выравнивания и расширения виджета, а также его CSS-стиль. Если виджет использовал бы обёртки внутри реализаций своих виртуальных методов, то корректировки (например, отступы виджета) применялись бы дважды. Поэтому GTK этого не позволяет и выведет предупреждение, если вы попробуете сделать это.

Конечно, если вы получаете запрос размера для другого виджета, например, дочернего виджета, вы должны использовать 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

a GtkWidget

Возвращает

TRUE если widget уничтожается

gtk_widget_unparent ()

void
gtk_widget_unparent (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов. Она должна вызываться родительскими виджетами для разъединения widget от родителя, обычно в методе удаления.

Параметры

widget

a GtkWidget

gtk_widget_show ()

void
gtk_widget_show (GtkWidget *widget);

Помечает виджет для отображения. Любой виджет, который не отображен, не будет отображаться на экране.

Помните, что необходимо отобразить контейнеры, содержащие виджет, помимо самого виджета, прежде чем он будет отображаться на экране.

При отображении верхнего контейнера он сразу же реализуется и отображается; другие отображаемые виджеты реализуются и отображаются, когда их верхний контейнер реализуется и отображается.

Параметры

widget

a GtkWidget

gtk_widget_hide ()

void
gtk_widget_hide (GtkWidget *widget);

Отменяет действие gtk_widget_show(), что приводит к скрытию виджета (он становится невидимым для пользователя).

Параметры

widget

a GtkWidget

gtk_widget_map ()

void
gtk_widget_map (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов. Приводит к отображению виджета, если он ещё не отображен.

Параметры

widget

a GtkWidget

gtk_widget_unmap ()

void
gtk_widget_unmap (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов. Приводит к скрытию виджета, если он отображен.

Параметры

widget

a GtkWidget

gtk_widget_realize ()

void
gtk_widget_realize (GtkWidget *widget);

Создаёт ресурсы GDK (системы окон) для виджета. Обычно реализация происходит неявно; если вы отображаете виджет и все его родительские контейнеры, виджет будет реализован и отображён автоматически.

Для реализации виджета необходимо, чтобы все его родительские виджеты были реализованы; вызов gtk_widget_realize() реализует родительские виджеты помимо widget. Если виджет ещё не находится внутри верхнего окна, при его реализации возникнут ошибки.

Эта функция в основном используется в реализациях виджетов и не очень полезна в других случаях. Во многих случаях, когда вы считаете, что вам может потребоваться эта функция, лучше подключиться к сигналу, который будет вызван после автоматической реализации виджета, например, “realize”.

Параметры

widget

a GtkWidget

gtk_widget_unrealize ()

void
gtk_widget_unrealize (GtkWidget *widget);

Эта функция полезна только в реализациях виджетов. Приводит к дереализации виджета (освобождает все ресурсы GDK, связанные с виджетом).

Параметры

widget

a GtkWidget

gtk_widget_queue_draw ()

void
gtk_widget_queue_draw (GtkWidget *widget);

Планирует перерисовку этого виджета в фазе отрисовки текущей или следующей кадровой анимации. Это означает, что реализация GtkWidgetClass.snapshot() widget будет вызвана.

Параметры

widget

a GtkWidget

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

a GtkWidget

gtk_widget_queue_allocate ()

void
gtk_widget_queue_allocate (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов.

Помечает виджет для повторного выполнения функции GtkWidgetClass::size_allocate. Используйте эту функцию вместо gtk_widget_queue_resize(), когда запрос на размер widget не изменился, но он хочет переместить своё содержимое.

Пример использования этой функции — gtk_widget_set_halign().

Параметры

widget

a GtkWidget

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

a GtkWidget

Возвращает

a GdkFrameClock, или NULL если виджет не реализован.

[nullable][transfer none]

gtk_widget_get_scale_factor ()

int
gtk_widget_get_scale_factor (GtkWidget *widget);

Получает внутренний масштабный коэффициент, отображающий координаты окна в фактические пиксели устройства. На традиционных системах он равен 1, на устройствах с высокой плотностью пикселей — большему значению (обычно 2).

См. gdk_surface_get_scale_factor().

Параметры

widget

a GtkWidget

Возвращает

коэффициент масштабирования для widget

GtkTickCallback ()

gboolean
(*GtkTickCallback) (GtkWidget *widget,
                    GdkFrameClock *frame_clock,
                    gpointer user_data);

Тип обратного вызова для добавления функции обновления анимаций. См. gtk_widget_add_tick_callback().

Параметры

widget

виджет

frame_clock

таймер кадров виджета (то же, что вызов gtk_widget_get_frame_clock())

user_data

пользовательские данные, переданные в gtk_widget_add_tick_callback().

Возвращает

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

a GtkWidget

callback

функция для обновления анимаций

user_data

данные, передаваемые в callback .

[closure]

notify

функция для освобождения user_data при удалении обратного вызова.

Возвращает

идентификатор соединения этого обратного вызова. Удалить обратный вызов, передав идентификатор, возвращённый этой функцией, в 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

a GtkWidget

id

идентификатор, возвращённый gtk_widget_add_tick_callback()

gtk_widget_size_allocate ()

void
gtk_widget_size_allocate (GtkWidget *widget,
                          const GtkAllocation *allocation,
                          int baseline);

Это простой вид gtk_widget_allocate(), который принимает новое положение widget в качестве части allocation .

Параметры

widget

a GtkWidget

allocation

положение и размер, которые нужно выделить для widget

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

A GtkWidget

width

Новый размер по ширине widget

height

Новый размер по высоте widget

baseline

Новая базовая линия widget , или -1

transform

Преобразование, которое нужно применить к widget .

[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 для аргументов или NULL для отсутствия аргументов.

[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 для аргументов или NULL для отсутствия аргументов.

[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 для аргументов или NULL для отсутствия аргументов.

[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 для widget_class

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

a GtkWidgetClass

signal_name

имя сигнала активации для widget_type

gtk_widget_class_get_activate_signal ()

guint
gtk_widget_class_get_activate_signal (GtkWidgetClass *widget_class);

Возвращает идентификатор сигнала активации, установленного с помощью gtk_widget_class_set_activate_signal().

Параметры

widget_class

a GtkWidgetClass

Возвращает

идентификатор сигнала или 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

a GtkWidget

Возвращает

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

a GtkWidget

Возвращает

TRUE если фокус теперь внутри widget .

gtk_widget_set_name ()

void
gtk_widget_set_name (GtkWidget *widget,
                     const char *name);

Виджеты могут быть именованы, что позволяет ссылаться на них из файла CSS. Вы можете применить стиль к виджетам с определенным именем в файле CSS. См. документацию по синтаксису CSS (на той же странице, что и документация для GtkStyleContext).

Обратите внимание, что синтаксис CSS имеет определенные специальные символы для разграничения и представления элементов в селекторе (точка, #, >, *...), поэтому использование этих символов сделает ваш виджет невозможным для сопоставления по имени. Любая комбинация буквенно-цифровых символов, дефисов и подчеркиваний подойдет.

Параметры

widget

a GtkWidget

name

имя виджета

gtk_widget_get_name ()

const char *
gtk_widget_get_name (GtkWidget *widget);

Возвращает имя виджета. См. gtk_widget_set_name() для значения имен виджетов.

Параметры

widget

a GtkWidget

Возвращает

имя виджета. Эта строка принадлежит GTK и не должна изменяться или освобождаться.

[nullable]

gtk_widget_set_sensitive ()

void
gtk_widget_set_sensitive (GtkWidget *widget,
                          gboolean sensitive);

Устанавливает чувствительность виджета. Виджет чувствителен, если пользователь может с ним взаимодействовать. Нечувствительные виджеты «выделены серым цветом», и пользователь с ними не может взаимодействовать. Нечувствительные виджеты известны как «неактивные», «отключенные» или «затемненные» в некоторых других наборах инструментов.

Параметры

widget

a GtkWidget

sensitive

TRUE для того, чтобы сделать виджет чувствительным

gtk_widget_set_parent ()

void
gtk_widget_set_parent (GtkWidget *widget,
                       GtkWidget *parent);

Эта функция полезна только при реализации подклассов GtkWidget.

Устанавливает parent в качестве родительского виджета widget и заботится о некоторых деталях, таких как обновление состояния и стиля дочернего элемента для отражения его нового местоположения и изменение размера родителя. Противоположная функция — gtk_widget_unparent().

Параметры

widget

a GtkWidget

parent

родительский виджет

gtk_widget_get_root ()

GtkRoot *
gtk_widget_get_root (GtkWidget *widget);

Возвращает виджет GtkRoot для widget или NULL если виджет не содержится в дереве виджетов с корневым виджетом.

Виджеты GtkRoot вернут себя здесь.

Параметры

widget

a GtkWidget

Возвращает

корневой виджет widget или NULL.

[transfer none][nullable]

gtk_widget_get_native ()

GtkNative *
gtk_widget_get_native (GtkWidget *widget);

Возвращает виджет GtkNative, содержащий widget, или NULL если виджет не содержится внутри дерева виджетов с нативным предком.

Виджеты GtkNative вернут себя здесь.

Параметры

widget

виджет GtkWidget

Возвращает

виджет GtkNative widget или NULL.

[transfer none][nullable]

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, возможно с промежуточными контейнерами.

Параметры

widget

виджет GtkWidget

ancestor

другой виджет GtkWidget

Возвращает

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_widget

src_y

координата Y, относительная к src_widget

dest_x

место для хранения координаты X, относительной к dest_widget.

[out][optional]

dest_y

место для хранения координаты Y, относительной к dest_widget.

[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

GtkEventController.

[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_TEXT_DIR_NONE.

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

a GtkWidget

Возвращает

новый PangoContext.

[transfer full]

gtk_widget_get_pango_context ()

PangoContext *
gtk_widget_get_pango_context (GtkWidget *widget);

Получает PangoContext с соответствующей картой шрифтов, описанием шрифта и основным направлением для этого виджета. В отличие от контекста, возвращаемого функцией gtk_widget_create_pango_context(), этот контекст принадлежит виджету (его можно использовать до тех пор, пока экран для виджета не изменится или виджет не будет удалён из его верхнего уровня), и он будет обновлён для соответствия любым изменениям атрибутов виджета. Это можно отслеживать, прослушивая изменения свойства “root” виджета.

Параметры

widget

a GtkWidget

Возвращает

PangoContext для виджета.

[transfer none]

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

a GtkWidget

options

a cairo_font_options_t, или NULL для сброса ранее установленных стандартных опций шрифта.

[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

a GtkWidget

Возвращает

cairo_font_options_t или NULL если не установлено.

[transfer none][nullable]

gtk_widget_set_font_map ()

void
gtk_widget_set_font_map (GtkWidget *widget,
                         PangoFontMap *font_map);

Устанавливает карту шрифтов для использования в Pango отрисовке. Карта шрифтов — это объект, используемый для поиска шрифтов. Установка пользовательской карты шрифтов может быть полезной в особых ситуациях, например, когда необходимо добавить приложения специфические шрифты к набору доступных шрифтов.

Если не установлено, виджет унаследует карту шрифтов от родителя.

Параметры

widget

a GtkWidget

font_map

a PangoFontMap, или NULL для сброса ранее установленной карты шрифтов.

[allow-none]

gtk_widget_get_font_map ()

PangoFontMap *
gtk_widget_get_font_map (GtkWidget *widget);

Получает карту шрифтов, установленную с помощью gtk_widget_set_font_map().

Параметры

widget

a GtkWidget

Возвращает

PangoFontMap, или NULL.

[transfer none][nullable]

gtk_widget_create_pango_layout ()

PangoLayout *
gtk_widget_create_pango_layout (GtkWidget *widget,
                                const char *text);

Создаёт новый PangoLayout с соответствующей картой шрифтов, описанием шрифта и основным направлением для отрисовки текста для этого виджета.

Если вы сохраняете PangoLayout, созданный таким образом, вам нужно пересоздать его, когда контекст виджета PangoContext заменён. Это можно отслеживать, прослушивая изменения свойства “root” виджета.

Параметры

widget

a GtkWidget

text

текст для установки в макет (может быть NULL).

[nullable]

Возвращает

новый PangoLayout.

[transfer full]

gtk_widget_get_cursor ()

GdkCursor *
gtk_widget_get_cursor (GtkWidget *widget);

Запрашивает курсор, установленный с помощью gtk_widget_set_cursor(). Подробности см. в этой функции.

Параметры

widget

a GtkWidget

Возвращаемое значение

текущий используемый курсор или NULL для использования по умолчанию.

[nullable][transfer none]

gtk_widget_set_cursor ()

void
gtk_widget_set_cursor (GtkWidget *widget,
                       GdkCursor *cursor);

Устанавливает курсор, отображаемый, когда указательные устройства указывают на widget.

Если cursor равно NULL, widget будет использовать курсор, унаследованный от родительского виджета.

Параметры

widget

a GtkWidget

cursor

новый курсор или NULL для использования курсора по умолчанию.

[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

a GtkWidget

name

Имя курсора или NULL для использования курсора по умолчанию.

[nullable]

gtk_widget_mnemonic_activate ()

gboolean
gtk_widget_mnemonic_activate (GtkWidget *widget,
                              gboolean group_cycling);

Выпускает сигнал “mnemonic-activate”.

Параметры

widget

a GtkWidget

group_cycling

TRUE если существуют другие виджеты с тем же мнемоническим символом

Возвращаемое значение

TRUE если сигнал был обработан

gtk_widget_class_set_accessible_role ()

void
gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,
                                      GtkAccessibleRole accessible_role);

Устанавливает роль доступности, используемую данным классом GtkWidget.

Разные роли доступности имеют различные состояния и отображаются по-разному средствами вспомогательной технологии.

Параметры

widget_class

a GtkWidgetClass

accessible_role

the GtkAccessibleRole используемый widget_class

gtk_widget_class_get_accessible_role ()

GtkAccessibleRole
gtk_widget_class_get_accessible_role (GtkWidgetClass *widget_class);

Извлекает роль доступности, используемую данным классом GtkWidget.

Разные роли доступности имеют различные состояния и отображаются по-разному средствами вспомогательной технологии.

См. также: gtk_accessible_get_accessible_role()

Параметры

widget_class

a GtkWidgetClass

Возвращаемое значение

роль доступности для класса виджета

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

a GtkWidget

direction

направление перемещения фокуса

Возвращаемое значение

TRUE если фокус оказался внутри widget

gtk_widget_get_child_visible ()

gboolean
gtk_widget_get_child_visible (GtkWidget *widget);

Получает значение, установленное с помощью gtk_widget_set_child_visible(). Если вам нужна эта функция, возможно, нужно переорганизовать код.

Эта функция полезна только для реализаций контейнеров и никогда не должна вызываться приложением.

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE если виджет сопоставлен с родителем.

gtk_widget_get_parent ()

GtkWidget *
gtk_widget_get_parent (GtkWidget *widget);

Возвращает родительский виджет widget.

Параметры

widget

a GtkWidget

Возвращаемое значение

родительский виджет widget или NULL.

[transfer none][nullable]

gtk_widget_get_settings ()

GtkSettings *
gtk_widget_get_settings (GtkWidget *widget);

Получает объект настроек, содержащий настройки, используемые для данного виджета.

Обратите внимание, что этот метод можно вызвать только когда GtkWidget прикреплен к главному окну, поскольку объект настроек специфичен для конкретного GdkDisplay. Если вы хотите отслеживать изменения настроек виджета, подключитесь к событию notify::display.

Параметры

widget

виджет GtkWidget

Возвращает

соответствующий объект GtkSettings.

[transfer none]

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

Возвращает

GdkDisplay для главного окна этого виджета.

[transfer none]

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

место хранения значения ширины, или NULL.

[out][allow-none]

height

место хранения значения высоты, или NULL.

[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

если TRUE, widget должен быть отображен вместе с его родителем.

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

ширина, которую widget должен запросить, или -1 для отмены установки

height

высота, которую widget должен запросить, или -1 для отмены установки

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

a GtkWidget

Возвращает

список мнемонических меток; освободите этот список с помощью 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” или слабое уведомление.

Параметры

widget

a GtkWidget

label

a GtkWidget который выступает в качестве мнемонической метки для widget

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

a GtkWidget

label

a GtkWidget который был ранее установлен как мнемоническая метка для widget с помощью gtk_widget_add_mnemonic_label().

gtk_widget_error_bell ()

void
gtk_widget_error_bell (GtkWidget *widget);

Уведомляет пользователя об ошибке, связанной с вводом, в этом виджете. Если параметр “gtk-error-bell” равен TRUE, он вызывает gdk_surface_beep(), в противном случае он ничего не делает.

Обратите внимание, что эффект gdk_surface_beep() может быть настроен множеством способов в зависимости от бэкэнда окон и используемой среды рабочего стола или диспетчера окон.

Параметры

widget

a GtkWidget

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

a GtkWidget

direction

направление перемещения фокуса

Возвращает

TRUE если остановка навигации по клавиатуре в порядке, FALSE если излучающий виджет должен попытаться обработать попытку навигации по клавиатуре в его родительском контейнере(ах).

gtk_widget_get_tooltip_markup ()

const char *
gtk_widget_get_tooltip_markup (GtkWidget *widget);

Получает содержимое подсказки для widget, установленное с помощью gtk_widget_set_tooltip_markup().

Параметры

widget

a GtkWidget

Возвращает

текст подсказки.

[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

a GtkWidget

markup

содержимое подсказки для widget .

[nullable]

gtk_widget_get_tooltip_text ()

const char *
gtk_widget_get_tooltip_text (GtkWidget *widget);

Получает содержимое подсказки для widget .

Если подсказка для widget была установлена с помощью gtk_widget_set_tooltip_markup(), эта функция вернет экранированный текст.

Параметры

widget

a GtkWidget

Возвращает

текст подсказки.

[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

a GtkWidget

text

содержимое всплывающей подсказки для widget .

[nullable]

gtk_widget_get_has_tooltip ()

gboolean
gtk_widget_get_has_tooltip (GtkWidget *widget);

Возвращает текущее значение свойства has-tooltip. Подробнее см. “has-tooltip”.

Параметры

widget

a GtkWidget

Возвращаемое значение

текущее значение 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

a GtkWidget

has_tooltip

имеет ли widget всплывающую подсказку.

gtk_widget_trigger_tooltip_query ()

void
gtk_widget_trigger_tooltip_query (GtkWidget *widget);

Вызывает запрос всплывающей подсказки на экране, где расположен toplevel окна widget.

Параметры

widget

a GtkWidget

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

a GtkWidget

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

a GtkWidget

Возвращаемое значение

Ширина widget

gtk_widget_get_height ()

int
gtk_widget_get_height (GtkWidget *widget);

Возвращает высоту содержимого виджета, переданную в его реализацию size-allocate. Это размер, который следует использовать в GtkWidgetClass.snapshot(). Для событий указателя см. gtk_widget_contains().

Параметры

widget

a GtkWidget

Возвращаемое значение

Высота 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

a GtkWidget

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 были одним и тем же виджетом.

Параметры

widget

запрашиваемый виджет GtkWidget

target

виджет GtkWidget

out_bounds

прямоугольник, принимающий границы.

[out caller-allocates]

Возвращает

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. Для выполнения этой операции оба виджета должны иметь общий корень.

Параметры

widget

запрашиваемый виджет GtkWidget

target

виджет GtkWidget, в систему координат которого нужно преобразовать

point

точка в системе координат widget

out_point

Устанавливается в соответствующие координаты в системе координат target.

[out caller-allocates]

Возвращает

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 для проверки, относительно начала координат widget

y

координата Y для проверки, относительно начала координат widget

Возвращает

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 для проверки, относительно начала координат widget

y

координата Y для проверки, относительно начала координат widget

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

a GtkWidget

can_focus

может ли виджет или его дочерние элементы получить фокус ввода

gtk_widget_get_focusable ()

gboolean
gtk_widget_get_focusable (GtkWidget *widget);

Определяет, может ли widget получить фокус ввода. См. gtk_widget_set_focusable().

Параметры

widget

a GtkWidget

Возвращает

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

a GtkWidget

focusable

может ли widget получить фокус ввода

gtk_widget_get_focus_on_click ()

gboolean
gtk_widget_get_focus_on_click (GtkWidget *widget);

Возвращает, должен ли виджет получить фокус при нажатии мышью. См. gtk_widget_set_focus_on_click().

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет должен получить фокус при нажатии мышью.

gtk_widget_set_focus_on_click ()

void
gtk_widget_set_focus_on_click (GtkWidget *widget,
                               gboolean focus_on_click);

Устанавливает, должен ли виджет получать фокус при нажатии мышью. Отключение захвата фокуса при клике полезно в таких местах, как панели инструментов, где вы не хотите удалять фокус с клавиатуры из основной области приложения.

Параметры

widget

a GtkWidget

focus_on_click

должен ли виджет получить фокус при нажатии мышью

gtk_widget_get_focus_child ()

GtkWidget *
gtk_widget_get_focus_child (GtkWidget *widget);

Возвращает текущий дочерний элемент, имеющий фокус у widget.

Параметры

widget

a GtkWidget

Возвращает

Текущий дочерний элемент с фокусом у 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

a GtkWidget

child

прямой дочерний виджет widget или NULL, чтобы сбросить дочерний элемент с фокусом у widget .

[nullable]

gtk_widget_get_can_target ()

gboolean
gtk_widget_get_can_target (GtkWidget *widget);

Запрашивает, может ли widget быть целью событий указателя.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget может получать события указателя

gtk_widget-set-can-target ()

void
gtk_widget_set_can_target (GtkWidget *widget,
                           gboolean can_target);

Устанавливает, может ли widget быть целью событий указателя.

Параметры

widget

a GtkWidget

can_target

может ли данный виджет получать события указателя

gtk_widget_get_sensitive ()

gboolean
gtk_widget_get_sensitive (GtkWidget *widget);

Возвращает чувствительность виджета (в смысле возвращает значение, установленное с помощью gtk_widget_set_sensitive()).

Однако эффективная чувствительность виджета определяется как его собственной чувствительностью, так и чувствительностью родительского виджета. См. gtk_widget_is_sensitive().

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет чувствителен

gtk_widget_is-sensitive ()

gboolean
gtk_widget_is_sensitive (GtkWidget *widget);

Возвращает эффективную чувствительность виджета, что означает, что он сам чувствителен, и родительский виджет также чувствителен.

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет эффективно чувствителен

gtk_widget_get_visible ()

gboolean
gtk_widget_get_visible (GtkWidget *widget);

Определяет, является ли виджет видимым. Если вы хотите учесть, является ли родительский виджет также видимым, используйте gtk_widget_is_visible() вместо этого.

Эта функция не проверяет, скрыт ли виджет каким-либо образом.

См. gtk_widget_set_visible().

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет видимый

gtk_widget_is_visible ()

gboolean
gtk_widget_is_visible (GtkWidget *widget);

Определяет, отмечены ли виджет и все его родительские элементы как видимые.

Эта функция не проверяет, скрыт ли виджет каким-либо образом.

См. также gtk_widget_get_visible() и gtk_widget_set_visible()

Параметры

widget

a GtkWidget

Возвращает

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

a GtkWidget

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

a GtkWidget

flags

Флаги состояния для включения

clear

Очистить состояние перед включением flags

gtk_widget_unset_state_flags ()

void
gtk_widget_unset_state_flags (GtkWidget *widget,
                              GtkStateFlags flags);

Эта функция предназначена для использования в реализациях виджетов. Отключает значения флагов для текущего состояния виджета (нечувствительный, предварительно выделенный и т.д.). См. gtk_widget_set_state_flags().

Параметры

widget

a GtkWidget

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

a GtkWidget

Возвращает

Флаги состояния виджета

gtk_widget_has-default ()

gboolean
gtk_widget_has_default (GtkWidget *widget);

Определяет, является ли widget текущим виджетом по умолчанию в пределах его верхнего уровня.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget является текущим виджетом по умолчанию в пределах его верхнего уровня, FALSE в противном случае

gtk_widget_has_focus ()

gboolean
gtk_widget_has_focus (GtkWidget *widget);

Определяет, имеет ли виджет глобальный фокус ввода. См. gtk_widget_is_focus(), чтобы увидеть разницу между наличием глобального фокуса ввода и наличием фокуса только внутри верхнего уровня.

Параметры

widget

a GtkWidget

Возвращает

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

a GtkWidget

Возвращает

TRUE если виджет должен отображать "прямоугольник фокуса"

gtk_widget_is-drawable ()

gboolean
gtk_widget_is_drawable (GtkWidget *widget);

Определяет, может ли к widget быть отрисовано. Виджет может быть отрисован, если он отображен и видим.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget может быть отрисован, FALSE в противном случае

gtk_widget_set-receives-default ()

void
gtk_widget_set_receives_default (GtkWidget *widget,
                                 gboolean receives_default);

Указывает, будет ли widget обрабатывать виджет по умолчанию в пределах его верхнего уровня при наличии фокуса, даже если другим виджетом является виджет по умолчанию.

Параметры

widget

a GtkWidget

receives_default

указывает, может ли widget быть виджетом по умолчанию.

gtk_widget_get_receives_default ()

gboolean
gtk_widget_get_receives_default (GtkWidget *widget);

Определяет, является ли widget всегда виджетом по умолчанию в своем верхнем уровне, когда у него есть фокус, даже если другим виджетом является виджет по умолчанию.

См. gtk_widget_set_receives_default().

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget действует как виджет по умолчанию при фокусе, FALSE в противном случае

gtk_widget_get_realized ()

gboolean
gtk_widget_get_realized (GtkWidget *widget);

Определяет, реализован ли widget.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget реализован, FALSE в противном случае

gtk_widget_get_mapped ()

gboolean
gtk_widget_get_mapped (GtkWidget *widget);

отображен ли виджет.

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет отображен, FALSE в противном случае.

gtk_widget_get_opacity ()

double
gtk_widget_get_opacity (GtkWidget *widget);

Возвращает запрашиваемую непрозрачность для этого виджета. См. gtk_widget_set_opacity().

Параметры

widget

a GtkWidget

Возвращает

запрашиваемую непрозрачность для этого виджета.

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

a GtkWidget

opacity

желаемая непрозрачность, от 0 до 1

gtk_widget_get_overflow ()

GtkOverflow
gtk_widget_get_overflow (GtkWidget *widget);

Возвращает значение, установленное с помощью gtk_widget_set_overflow().

Параметры

widget

a GtkWidget

Возвращает

Переполнение виджета.

gtk_widget_set_overflow ()

void
gtk_widget_set_overflow (GtkWidget *widget,
                         GtkOverflow overflow);

Устанавливает, как widget обрабатывает содержимое, которое рисуется за пределами области содержимого виджета. Подробности см. в определении GtkOverflow.

Это свойство предназначено для реализации виджетов и не должно использоваться кодом приложения.

Значение по умолчанию — GTK_OVERFLOW_VISIBLE.

Параметры

widget

a GtkWidget

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

Размер для противоположной orientation ориентации. То есть, если orientation — GTK_ORIENTATION_HORIZONTAL, это высота, с которой должен быть измерен виджет. Случай GTK_ORIENTATION_VERTICAL аналогичен. Таким образом, можно реализовать запросы высоты для ширины и ширины для высоты. Если размер неизвестен, можно передать -1.

minimum

место для хранения минимального размера или NULL.

[out][optional]

natural

место для хранения естественного размера или NULL.

[out][optional]

minimum_baseline

место для хранения положения базовой линии для минимального размера или NULL.

[out][optional]

natural_baseline

место для хранения положения базовой линии для естественного размера или NULL.

[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

дочерний виджет widget

snapshot

GtkSnapshot, переданный виджету. В частности, не должно быть сделано никаких вызовов gtk_snapshot_translate() или других вызовов преобразования.

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 для добавления дочерних элементов.

Параметры

widget

виджет GtkWidget

parent

родительский виджет GtkWidget для вставки widget

next_sibling

новый следующий брат widget или NULL.

[nullable]

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 для добавления дочерних элементов.

Параметры

widget

виджет GtkWidget

parent

родительский виджет GtkWidget для вставки widget

previous_sibling

новый предыдущий брат widget или NULL.

[nullable]

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

Возвращает

объект GtkLayoutManager.

[transfer none][nullable]

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

Класс стиля, добавляемый к widget, без ведущей точки, используемой для обозначения классов стилей

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

Класс стиля для удаления из widget, без ведущей точки, используемой для обозначения классов стилей

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, завершённый нулём, которые нужно применить к widget .

[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

a GtkRequisition

Возвращает

копию requisition

gtk_requisition_free ()

void
gtk_requisition_free (GtkRequisition *requisition);

Освобождает GtkRequisition.

Параметры

requisition

a GtkRequisition

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

место для хранения минимального размера или NULL.

[out][allow-none]

natural_size

место для хранения естественного размера или NULL.

[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

a GtkWidget

Возвращает

горизонтальное выравнивание widget

gtk_widget_set_halign ()

void
gtk_widget_set_halign (GtkWidget *widget,
                       GtkAlign align);

Устанавливает горизонтальное выравнивание widget . См. свойство “halign”.

Параметры

widget

a GtkWidget

align

горизонтальное выравнивание

gtk_widget_get_valign ()

GtkAlign
gtk_widget_get_valign (GtkWidget *widget);

Получает значение свойства “valign”.

Параметры

widget

a GtkWidget

Возвращает

вертикальное выравнивание widget

gtk_widget_set_valign ()

void
gtk_widget_set_valign (GtkWidget *widget,
                       GtkAlign align);

Устанавливает вертикальное выравнивание widget . См. свойство “valign”.

Параметры

widget

a GtkWidget

align

вертикальное выравнивание

gtk_widget_get_margin_start ()

int
gtk_widget_get_margin_start (GtkWidget *widget);

Получает значение свойства “margin-start”.

Параметры

widget

a GtkWidget

Возвращает

начальный отступ widget

gtk_widget_set_margin_start ()

void
gtk_widget_set_margin_start (GtkWidget *widget,
                             int margin);

Устанавливает начальный отступ widget . См. свойство “margin-start”.

Параметры

widget

a GtkWidget

margin

начальный отступ

gtk_widget_get_margin_end ()

int
gtk_widget_get_margin_end (GtkWidget *widget);

Получает значение свойства “margin-end”.

Параметры

widget

a GtkWidget

Возвращает

Крайний отступ widget

gtk_widget_set_margin_end ()

void
gtk_widget_set_margin_end (GtkWidget *widget,
                           int margin);

Устанавливает крайний отступ widget . См. свойство “margin-end”.

Параметры

widget

a GtkWidget

margin

крайний отступ

gtk_widget_get_margin_top ()

int
gtk_widget_get_margin_top (GtkWidget *widget);

Получает значение свойства “margin-top”.

Параметры

widget

a GtkWidget

Возвращает

Верхний отступ widget

gtk_widget_set_margin_top ()

void
gtk_widget_set_margin_top (GtkWidget *widget,
                           int margin);

Устанавливает верхний отступ widget . См. свойство “margin-top”.

Параметры

widget

a GtkWidget

margin

верхний отступ

gtk_widget_get_margin_bottom ()

int
gtk_widget_get_margin_bottom (GtkWidget *widget);

Получает значение свойства “margin-bottom”.

Параметры

widget

a GtkWidget

Возвращает

Нижний отступ widget

gtk_widget_set_margin_bottom ()

void
gtk_widget_set_margin_bottom (GtkWidget *widget,
                              int margin);

Устанавливает нижний отступ widget . См. свойство “margin-bottom”.

Параметры

widget

a GtkWidget

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

имя члена экземпляра в структуре экземпляра для data_type

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

имя члена экземпляра в структуре экземпляра для data_type

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

имя частного члена экземпляра в структуре данных для data_type

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

имя частного члена экземпляра в структуре данных для data_type

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 GtkWidget

Возвращает

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 GtkWidget

Возвращает

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

a GtkWidget

name

префикс для действий в group

group

a GActionGroup, или NULL.

[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

a GtkWidget

name

имя действия для активации

format_string

Строка формата GVariant для аргументов или NULL для отсутствия аргументов

...

аргументы, как указано в строке формата

Возвращает

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

a GtkWidget

name

имя действия для активации

args

параметры для использования, или NULL.

[allow-none]

Возвращает

TRUE если действие было активировано, FALSE если действие не существует.

gtk_widget_activate_default ()

void
gtk_widget_activate_default (GtkWidget *widget);

Активировать действие default.activate из widget.

Параметры

widget

a GtkWidget

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

a GtkWidgetClass

action_name

имя действия с префиксом, например, "clipboard.paste"

parameter_type

тип параметра, или NULL.

[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

a GtkWidgetClass

action_name

имя действия

property_name

имя свойства в экземплярах widget_class или любого родительского класса.

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

a GtkWidgetClass

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

a GtkWidget

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);
};

Члены

show ()

Сигнал, излучаемый, когда виджет показан

hide ()

Сигнал, излучаемый, когда виджет скрыт.

map ()

Сигнал, излучаемый, когда виджет будет отображён, то есть когда виджет видим (что контролируется с помощью gtk_widget_set_visible()) и все его родительские виджеты до самого верхнего виджета также видны.

unmap ()

Сигнал, излучаемый, когда виджет будет не отображён, что означает, что либо он, либо любой из его родительских виджетов до верхнего виджета были скрыты.

realize ()

Сигнал, излучаемый, когда виджет связан с GdkSurface, что означает, что gtk_widget_realize() был вызван или виджет был отображён (то есть он будет нарисован).

unrealize ()

Сигнал, излучаемый, когда GdkSurface, связанный с виджетом, уничтожен, что означает, что gtk_widget_unrealize() был вызван или виджет был скрыт (то есть он будет скрыт).

root ()

Вызывается, когда виджет добавляется к виджету GtkRoot. Должен производить цепочечную подстановку

unroot ()

Вызывается, когда виджет будет удалён из его виджета GtkRoot. Должен производить цепочечную подстановку

size_allocate ()

Вызывается для установки распределения, если у виджета нет менеджера компоновки.

state_flags_changed ()

Сигнал, излучаемый, когда состояние виджета изменяется, см. gtk_widget_get_state_flags().

direction_changed ()

Сигнал, излучаемый, когда направление текста виджета изменяется.

get_request_mode ()

Вызывается для получения режима запроса, если у виджета нет менеджера компоновки. Это позволяет виджету указать контейнеру-родителю, предпочитает ли он размещаться в режиме GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH или GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT. GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH означает, что виджет предпочитает, чтобы сначала был вызван GtkWidgetClass.measure() для получения ширины по умолчанию (передача for_size со значением -1), затем снова, чтобы получить высоту для этой ширины по умолчанию. GTK_SIZE_REQUEST_CONSTANT_SIZE отключает любое управление геометрией «высота по ширине» или «ширина по высоте» для данного виджета и является возвращаемым значением по умолчанию. Важно отметить, что любой виджет, который обменивает высоту по ширине или ширину по высоте, должен правильно реагировать на значение for_size ≥ -1, передаваемое GtkWidgetClass.measure, для обоих возможных ориентаций.

measure ()

Вызывается для получения минимального и естественного размера виджета, если у виджета нет менеджера компоновки. В зависимости от параметра orientation, переданное for_size может интерпретироваться как ширина или высота. Виджету никогда не будет выделено меньше, чем его минимальный размер.

mnemonic_activate ()

Активирует widget, если group_cycling имеет значение FALSE, и просто получает фокус, если group_cycling имеет значение TRUE.

grab_focus ()

Приводит к тому, что widget получает фокус клавиатуры для GtkWindow, в котором он находится.

focus ()

Функция vfunc для gtk_widget_child_focus()

set_focus_child ()

Устанавливает фокусированный дочерний виджет. Должен производить цепочечную подстановку

move_focus ()

Сигнал, излучаемый при запросе изменения фокуса

keynav_failed ()

Сигнал, излучаемый, если навигация по клавиатуре завершается ошибкой.

query_tooltip ()

Сигнал, излучаемый, когда «has-tooltip» имеет значение TRUE и таймер ожидания наведения курсора истек, при наведении курсора «над» виджетом; или излучаемый, когда виджет получил фокус в режиме клавиатуры.

compute_expand ()

Вычисляет, должен ли контейнер предоставлять этому виджету дополнительное пространство при возможности.

css_changed ()

Функция vfunc, вызываемая, когда CSS, используемый виджетом, был изменён. Виджеты должны затем сбросить свои кэши, зависящие от CSS, и соответственно поставить в очередь операции изменения размера или перерисовки. Реализация по умолчанию позаботится об этом для всех стандартных свойств CSS, поэтому реализации должны производить цепочечную подстановку.

system_setting_changed ()

Излучается, когда изменилось системное значение. Должен производить цепочечную подстановку.

snapshot ()

Функция vfunc, вызываемая, когда требуется создать новый снимок виджета.

contains ()

Функция vfunc для gtk_widget_contains().

GtkRequisition

typedef struct {
  int width;
  int height;
} GtkRequisition;

A GtkRequisition представляет желаемый размер виджета. Дополнительная информация приведена в разделе управления геометрией виджета GtkWidget.

Члены

int width;

желаемая ширина виджета

int height;

желаемая высота виджета

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 data;

Указатель клиента

int minimum_size;

Минимальный размер, необходимый для выделения в данном направлении

int natural_size;

Естественный размер для выделения в данном направлении

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

предыдущее направление текста widget

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

TRUE если существуют другие виджеты с тем же мнемоническим символом

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 курсора, где было сгенерировано событие, относительно левой стороны widget

y

координата y курсора, где было сгенерировано событие, относительно верхней стороны widget

keyboard_mode

TRUE если подсказка была вызвана с помощью клавиатуры

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API