Spec-Zone.ru › GTK 4.0

GtkComboBox

GtkComboBox — Виджет для выбора из списка элементов

Функции

GtkWidget * gtk_combo_box_new ()
GtkWidget * gtk_combo_box_new_with_entry ()
GtkWidget * gtk_combo_box_new_with_model ()
GtkWidget * gtk_combo_box_new_with_model_and_entry ()
int gtk_combo_box_get_active ()
void gtk_combo_box_set_active ()
gboolean gtk_combo_box_get_active_iter ()
void gtk_combo_box_set_active_iter ()
int gtk_combo_box_get_id_column ()
void gtk_combo_box_set_id_column ()
const char * gtk_combo_box_get_active_id ()
gboolean gtk_combo_box_set_active_id ()
GtkTreeModel * gtk_combo_box_get_model ()
void gtk_combo_box_set_model ()
void gtk_combo_box_popup ()
void gtk_combo_box_popup_for_device ()
void gtk_combo_box_popdown ()
GtkTreeViewRowSeparatorFunc gtk_combo_box_get_row_separator_func ()
void gtk_combo_box_set_row_separator_func ()
void gtk_combo_box_set_button_sensitivity ()
GtkSensitivityType gtk_combo_box_get_button_sensitivity ()
gboolean gtk_combo_box_get_has_entry ()
void gtk_combo_box_set_entry_text_column ()
int gtk_combo_box_get_entry_text_column ()
void gtk_combo_box_set_popup_fixed_width ()
gboolean gtk_combo_box_get_popup_fixed_width ()
void gtk_combo_box_set_child ()
GtkWidget * gtk_combo_box_get_child ()

Свойства

int active Чтение / Запись
char * active-id Чтение / Запись
GtkSensitivityType button-sensitivity Чтение / Запись
GtkWidget * child Чтение / Запись
int entry-text-column Чтение / Запись
gboolean has-entry Чтение / Запись / Только для создания
gboolean has-frame Чтение / Запись
int id-column Чтение / Запись
GtkTreeModel * model Чтение / Запись
gboolean popup-fixed-width Чтение / Запись
gboolean popup-shown Чтение

Сигналы

void changed Выполнить последним
char* format-entry-text Выполнить последним
void move-active Действие
gboolean popdown Действие
void popup Действие

Типы и значения

struct GtkComboBox
struct GtkComboBoxClass
перечисление GtkSensitivityType

Иерархия объектов

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkComboBox
                ╰── GtkComboBoxText

Реализованные интерфейсы

GtkComboBox реализует GtkAccessible, GtkBuildable, GtkConstraintTarget, GtkCellLayout и GtkCellEditable.

Файлы

#include <gtk/gtk.h>

Описание

GtkComboBox — это виджет, позволяющий пользователю выбирать из списка допустимых значений. GtkComboBox отображает выбранное значение. При активации GtkComboBox отображает всплывающее меню, которое позволяет пользователю сделать новый выбор. Стиль отображения выбранного значения и стиль всплывающего меню определяются текущей темой. Он может быть похож на комбинированный список в Windows.

GtkComboBox использует паттерн «модель-представление»; список допустимых значений задаётся в виде древовидной модели, а отображение значений может быть адаптировано к данным в модели с помощью визуализаторов ячеек, как и в дереве. Это возможно, так как GtkComboBox реализует интерфейс GtkCellLayout. Деревовидная модель, содержащая допустимые значения, не ограничивается плоским списком, она может быть реальным деревом, и всплывающее меню будет отражать структуру дерева.

Для того, чтобы пользователь мог вводить значения, отсутствующие в модели, свойство «has-entry» позволяет GtkComboBox содержать GtkEntry. К этому полю можно получить доступ, вызвав gtk_combo_box_get_child() в комбобоксе.

Для простого списка текстовых вариантов API модели-представления GtkComboBox может быть немного перегружен. В этом случае GtkComboBoxText предлагает простой альтернативный вариант. Как GtkComboBox, так и GtkComboBoxText могут содержать поле ввода.

Узлы CSS

Обычный комбобокс содержит блок с классом .linked, кнопку с классом .combo, а внутри кнопок — элемент cellview и стрелку.

GtkComboBox с полем ввода имеет один узел CSS с именем combobox. Он содержит блок с классом .linked. Этот блок содержит поле ввода и кнопку, оба с добавленным классом .combo. Кнопка также содержит другой узел с именем arrow.

Доступность

GtkComboBox использует роль GTK_ACCESSIBLE_ROLE_COMBO_BOX.

Функции

gtk_combo_box_new ()

GtkWidget *
gtk_combo_box_new (void);

Создаёт новую пустую GtkComboBox.

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

Новая GtkComboBox.

gtk_combo_box_new_with_entry ()

GtkWidget *
gtk_combo_box_new_with_entry (void);

Создаёт новую пустую GtkComboBox с элементом ввода.

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

Новая GtkComboBox.

gtk_combo_box_new_with_model ()

GtkWidget *
gtk_combo_box_new_with_model (GtkTreeModel *model);

Создаёт новую GtkComboBox с моделью, инициализированной до model .

Параметры

model

Модель GtkTreeModel.

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

Новая GtkComboBox.

gtk_combo_box_new_with_model_and_entry ()

GtkWidget *
gtk_combo_box_new_with_model_and_entry
                               (GtkTreeModel *model);

Создаёт новую пустую GtkComboBox с элементом ввода и с моделью, инициализированной до model .

Параметры

model

Модель GtkTreeModel

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

Новая GtkComboBox

gtk_combo_box_get_active ()

int
gtk_combo_box_get_active (GtkComboBox *combo_box);

Возвращает индекс текущего активного элемента или -1, если активного элемента нет. Если модель — не плоская треевая модель, и активный элемент не является непосредственным потомком корня дерева, эта функция возвращает gtk_tree_path_get_indices (path)[0], где path — GtkTreePath активного элемента.

Параметры

combo_box

Модель GtkComboBox

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

Целое число, являющееся индексом текущего активного элемента, или -1, если активного элемента нет.

gtk_combo_box_set_active ()

void
gtk_combo_box_set_active (GtkComboBox *combo_box,
                          int index_);

Устанавливает активный элемент combo_box в элемент с индексом index .

Параметры

combo_box

Модель GtkComboBox

index_

Индекс в модели, переданной во время создания, или -1 для отсутствия активного элемента

gtk_combo_box_get_active_iter ()

gboolean
gtk_combo_box_get_active_iter (GtkComboBox *combo_box,
                               GtkTreeIter *iter);

Устанавливает iter на указание на текущий активный элемент, если активный элемент есть. В противном случае iter остаётся без изменений.

Параметры

combo_box

Модель GtkComboBox

iter

Модель GtkTreeIter.

[out]

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

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

gtk_combo_box_set_active_iter ()

void
gtk_combo_box_set_active_iter (GtkComboBox *combo_box,
                               GtkTreeIter *iter);

Устанавливает текущий активный элемент в тот, который ссылается iter , или отменяет установку активного элемента, если iter является NULL.

Параметры

combo_box

Модель GtkComboBox

iter

Модель GtkTreeIter, или NULL.

[allow-none]

gtk_combo_box_get_id_column ()

int
gtk_combo_box_get_id_column (GtkComboBox *combo_box);

Возвращает столбец, который combo_box использует для получения строковых идентификаторов значений.

Параметры

combo_box

Модель GtkComboBox

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

Столбец в модели данных источника combo_box .

gtk_combo_box_set_id_column ()

void
gtk_combo_box_set_id_column (GtkComboBox *combo_box,
                             int id_column);

Устанавливает столбец модели, который combo_box должен использовать для получения строковых идентификаторов значений. Столбец id_column в модели combo_box должен быть типа G_TYPE_STRING.

Параметры

combo_box

Модель GtkComboBox

id_column

Столбец в model для получения строковых идентификаторов значений

gtk_combo_box_get_active_id ()

const char *
gtk_combo_box_get_active_id (GtkComboBox *combo_box);

Возвращает идентификатор активной строки combo_box . Это значение взято из активной строки и столбца, указанного свойством “id-column” combo_box (см. gtk_combo_box_set_id_column()).

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

Если свойство “id-column” combo_box не установлено, или если активная строка отсутствует, или если у активной строки есть NULL значение идентификатора, то возвращается NULL.

Параметры

combo_box

Модель GtkComboBox

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

Идентификатор активной строки, или NULL.

[nullable]

gtk_combo_box_set_active_id ()

gboolean
gtk_combo_box_set_active_id (GtkComboBox *combo_box,
                             const char *active_id);

Изменяет активную строку combo_box на строку с идентификатором, равным active_id, или отменяет активную строку, если active_id имеет значение NULL. Строки с идентификатором в виде строки NULL нельзя сделать активными с помощью этой функции.

Если свойство “id-column” combo_box не задано или если ни одна строка не имеет заданного идентификатора, функция ничего не делает и возвращает FALSE.

Параметры

combo_box

a GtkComboBox

active_id

идентификатор строки для выбора, или NULL.

[allow-none]

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

TRUE если была найдена строка с соответствующим идентификатором. Если для отмены активной строки был передан NULL active_id, функция всегда возвращает TRUE.

gtk_combo_box_get_model ()

GtkTreeModel *
gtk_combo_box_get_model (GtkComboBox *combo_box);

Возвращает GtkTreeModel, который действует в качестве источника данных для combo_box .

Параметры

combo_box

A GtkComboBox

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

A GtkTreeModel, переданный во время создания.

[nullable][transfer none]

gtk_combo_box_set_model ()

void
gtk_combo_box_set_model (GtkComboBox *combo_box,
                         GtkTreeModel *model);

Устанавливает модель, используемую combo_box, на model. Отменяет ранее установленную модель (если применимо). Если модель NULL, модель будет отменена.

Обратите внимание, что эта функция не очищает обработчики ячеек, необходимо самостоятельно вызвать gtk_cell_layout_clear(), если требуется настроить разные обработчики ячеек для новой модели.

Параметры

combo_box

A GtkComboBox

model

A GtkTreeModel.

[allow-none]

gtk_combo_box_popup ()

void
gtk_combo_box_popup (GtkComboBox *combo_box);

Открывает меню или выпадающий список combo_box.

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

Перед вызовом этой функции combo_box должна быть отображена; в противном случае ничего не произойдёт.

Параметры

combo_box

a GtkComboBox

gtk_combo_box_popup_for_device ()

void
gtk_combo_box_popup_for_device (GtkComboBox *combo_box,
                                GdkDevice *device);

Открывает меню combo_box. Обратите внимание, что в настоящее время это не делает ничего с устройством, так как ранее использовалось только для combo-боксов в режиме списка, а они были удалены в GTK 4. Однако оно сохраняется на случай, если подобная функциональность будет добавлена позже.

Параметры

combo_box

a GtkComboBox

device

a GdkDevice

gtk_combo_box_popdown ()

void
gtk_combo_box_popdown (GtkComboBox *combo_box);

Скрывает меню или выпадающий список combo_box.

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

Параметры

combo_box

a GtkComboBox

gtk_combo_box_get_row_separator_func ()

GtkTreeViewRowSeparatorFunc
gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box);

Возвращает текущую функцию разделителя строк.

[skip]

Параметры

combo_box

a GtkComboBox

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

текущая функция разделителя строк.

[nullable]

gtk_combo_box_set-row-separator-func ()

void
gtk_combo_box_set_row_separator_func (GtkComboBox *combo_box,
                                      GtkTreeViewRowSeparatorFunc func,
                                      gpointer data,
                                      GDestroyNotify destroy);

Устанавливает функцию разделителя строк, которая используется для определения, следует ли отображать строку в виде разделителя. Если функция разделителя строк NULL, разделители не отображаются. Это значение по умолчанию.

Параметры

combo_box

a GtkComboBox

func

a GtkTreeViewRowSeparatorFunc.

[nullable]

data

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

[allow-none]

destroy

уведомление о удалении data, или NULL.

[allow-none]

gtk_combo_box_set_button_sensitivity ()

void
gtk_combo_box_set_button_sensitivity (GtkComboBox *combo_box,
                                      GtkSensitivityType sensitivity);

Устанавливает, следует ли кнопке раскрытия combo-бокса быть всегда активной (GTK_SENSITIVITY_ON), никогда не активной (GTK_SENSITIVITY_OFF) или только если для отображения есть хотя бы один элемент (GTK_SENSITIVITY_AUTO).

Параметры

combo_box

a GtkComboBox

sensitivity

указать чувствительность кнопки раскрытия

gtk_combo_box_get_button_sensitivity ()

GtkSensitivityType
gtk_combo_box_get_button_sensitivity (GtkComboBox *combo_box);

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

Параметры

combo_box

a GtkComboBox

Возвращает

GTK_SENSITIVITY_ON, если кнопка раскрывающегося списка чувствительна, когда модель пуста, GTK_SENSITIVITY_OFF, если кнопка всегда нечувствительна, или GTK_SENSITIVITY_AUTO, если она чувствительна только в том случае, если в модели есть один элемент для выбора.

gtk_combo_box_get_has_entry ()

gboolean
gtk_combo_box_get_has_entry (GtkComboBox *combo_box);

Возвращает, имеет ли комбинация кнопок поле ввода.

Параметры

combo_box

a GtkComboBox

Возвращает

имеется ли поле ввода в combo_box .

gtk_combo_box_set_entry_text_column ()

void
gtk_combo_box_set_entry_text_column (GtkComboBox *combo_box,
                                     int text_column);

Устанавливает столбец модели, который combo_box должен использовать для получения строк, которые нужно text_column . Столбец text_column в модели combo_box должен быть типа G_TYPE_STRING.

Это актуально только в том случае, если combo_box был создан с “has-entry” в качестве TRUE.

Параметры

combo_box

A GtkComboBox

text_column

Столбец в model для получения строк для внутреннего поля ввода.

gtk_combo_box_get_entry_text_column ()

int
gtk_combo_box_get_entry_text_column (GtkComboBox *combo_box);

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

Параметры

combo_box

A GtkComboBox.

Возвращает

Столбец в модели источника данных combo_box .

gtk_combo_box_set_popup_fixed_width ()

void
gtk_combo_box_set_popup_fixed_width (GtkComboBox *combo_box,
                                     gboolean fixed);

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

Параметры

combo_box

a GtkComboBox

fixed

использовать ли фиксированную ширину всплывающего окна

gtk_combo_box_get_popup_fixed_width ()

gboolean
gtk_combo_box_get_popup_fixed_width (GtkComboBox *combo_box);

Получает, использует ли всплывающее окно фиксированную ширину, соответствующую выделенной ширине комбинации кнопок.

Параметры

combo_box

a GtkComboBox

Возвращает

TRUE если всплывающее окно использует фиксированную ширину

gtk_combo_box_set_child ()

void
gtk_combo_box_set_child (GtkComboBox *combo_box,
                         GtkWidget *child);

Устанавливает дочерний виджет combo_box .

Параметры

combo_box

a GtkComboBox

child

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

[allow-none]

gtk_combo_box_get_child ()

GtkWidget *
gtk_combo_box_get_child (GtkComboBox *combo_box);

Получает дочерний виджет combo_box .

Параметры

combo_box

a GtkComboBox

Возвращает

дочерний виджет combo_box .

[nullable][transfer none]

Типы и значения

struct GtkComboBox

struct GtkComboBox;

struct GtkComboBoxClass

struct GtkComboBoxClass {
  GtkWidgetClass parent_class;

  /* signals */
  void     (* changed)           (GtkComboBox *combo_box);
  char    *(* format_entry_text) (GtkComboBox *combo_box,
                                  const char *path);
};

Члены

changed ()

Сигнал генерируется при изменении активного элемента.

format_entry_text ()

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

перечисление GtkSensitivityType

Определяет, как GTK обрабатывает чувствительность различных элементов управления, таких как кнопки комбинации кнопок.

Члены

GTK_SENSITIVITY_AUTO

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

GTK_SENSITIVITY_ON

Элемент управления всегда чувствителен.

GTK_SENSITIVITY_OFF

Элемент управления всегда нечувствителен.

Подробное описание свойств

Свойство “active”

  “active”                   int

Элемент, который в данный момент активен. Если модель — не плоская древовидная модель, а активный элемент не является непосредственным потомком корня дерева, значение этого свойства — gtk_tree_path_get_indices (path)[0], где path — GtkTreePath активного элемента.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “active-id”

  “active-id”                char *

Значение столбца ID активной строки.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Значение по умолчанию: NULL

Свойство “button-sensitivity”

  “button-sensitivity”       GtkSensitivityType

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

Владелец: GtkComboBox

Флаги: Чтение / Запись

Значение по умолчанию: GTK_SENSITIVITY_AUTO

Свойство “child”

  “child”                    GtkWidget *

Дочерний виджет (child_widget).

Владелец: GtkComboBox

Флаги: Чтение / Запись

Свойство “entry-text-column”

  “entry-text-column”        int

Столбец в модели GtkComboBox, который ассоциируется со строками из поля ввода, если combobox был создан с «has-entry» = TRUE.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “has-entry”

  “has-entry”                gboolean

Указывает, содержит ли combobox поле ввода.

Владелец: GtkComboBox

Флаги: Чтение / Запись / Только для создания

Значение по умолчанию: FALSE

Свойство “has-frame”

  “has-frame”                gboolean

Свойство has-frame управляет отображением рамки вокруг поля ввода.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

Свойство “id-column”

  “id-column”                int

Столбец в модели combo box, предоставляющий строковые идентификаторы для значений в модели, если != -1.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “model”

  “model”                    GtkTreeModel *

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

Владелец: GtkComboBox

Флаги: Чтение / Запись

Свойство “popup-fixed-width”

  “popup-fixed-width”        gboolean

Указывает, должна ли ширина раскрывающегося списка быть фиксированной и соответствовать ширине combo box.

Владелец: GtkComboBox

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

Свойство “popup-shown”

  “popup-shown”              gboolean

Указывает, раскрыт ли раскрывающийся список combobox. Это свойство полезно для подключения к событию notify::popup-shown.

Владелец: GtkComboBox

Флаги: Чтение

Значение по умолчанию: FALSE

Подробное описание сигналов

Сигнал “changed”

void
user_function (GtkComboBox *widget,
               gpointer     user_data)

Сигнал changed генерируется при изменении активного элемента. Это может произойти при выборе пользователем другого элемента в списке или при вызове gtk_combo_box_set_active_iter(). Сигнал также генерируется во время ввода текста в поле ввода combo box с полем ввода.

Параметры

widget

объект, получивший сигнал

user_data

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

Флаги: Выполняется последним

Сигнал “format-entry-text”

char*
user_function (GtkComboBox *combo,
               char        *path,
               gpointer     user_data)

Для combo box, созданных с полем ввода (см. GtkComboBox:has-entry).

Сигнал, позволяющий изменить способ отображения текста в поле ввода combo box.

Подключите обработчик сигнала, который возвращает выделенную строку, представляющую path. Эта строка будет использована для установки текста в поле ввода combo box. По умолчанию, обработчик сигнала использует текст из столбца модели GtkComboBox::entry-text-column.

Вот пример обработчика сигнала, который извлекает данные из модели и отображает их в поле ввода.

combobox
├── box.linked
│   ╰── button.combo
│       ╰── box
│           ├── cellview
│           ╰── arrow
╰── window.popup

Параметры

combo

объект, получивший сигнал

path

строка GtkTreePath из текущей модели combobox для форматирования текста

user_data

данные пользователя, установленные при подключении обработчика сигнала

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

новая выделенная строка, представляющая path для текущей модели GtkComboBox.

[передача полная]

Флаги: Выполняется последним

Сигнал “move-active”

void
user_function (GtkComboBox  *widget,
               GtkScrollType scroll_type,
               gpointer      user_data)

Сигнал ::move-active — это сигнал сочетания клавиш, который генерируется для перемещения активного выделения.

Параметры

widget

объект, получивший сигнал

scroll_type

GtkScrollType

user_data

данные пользователя, установленные при подключении обработчика сигнала

Флаги: Действие

Сигнал “popdown”

gboolean
user_function (GtkComboBox *button,
               gpointer     user_data)

Сигнал ::popdown — это сигнал сочетания клавиш, который генерируется для скрытия списка combo box.

По умолчанию, для этого сигнала назначены сочетания Alt+Up и Escape.

Параметры

button

объект, получивший сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала

Флаги: Действие

Сигнал “popup”

void
user_function (GtkComboBox *widget,
               gpointer     user_data)

Сигнал ::popup — это сигнал сочетания клавиш, который генерируется для показа списка combo box.

По умолчанию, для этого сигнала назначено сочетание Alt+Down.

Параметры

widget

объект, получивший сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала

Флаги: Действие

См. также

GtkComboBoxText, GtkTreeModel, GtkCellRenderer

© 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/GtkComboBox.html

Spec-Zone.ru

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