GtkComboBox
GtkComboBox — Виджет для выбора из списка элементов
Функции
Свойства
| 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, или | [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 | Столбец в |
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 | ||
active_id | идентификатор строки для выбора, или | [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 |
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 | ||
model | A GtkTreeModel. | [allow-none] |
gtk_combo_box_popup ()
void
gtk_combo_box_popup (GtkComboBox *combo_box); Открывает меню или выпадающий список combo_box.
Эта функция в основном предназначена для использования технологиями доступности; для приложений она практически бесполезна.
Перед вызовом этой функции combo_box должна быть отображена; в противном случае ничего не произойдёт.
Параметры
combo_box |
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 | ||
device |
gtk_combo_box_popdown ()
void
gtk_combo_box_popdown (GtkComboBox *combo_box); Скрывает меню или выпадающий список combo_box.
Эта функция в основном предназначена для использования технологиями доступности; для приложений она практически бесполезна.
Параметры
combo_box |
gtk_combo_box_get_row_separator_func ()
GtkTreeViewRowSeparatorFunc
gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box); Возвращает текущую функцию разделителя строк.
[skip]
Параметры
combo_box |
Возвращаемое значение
текущая функция разделителя строк.
[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 | ||
func | [nullable] | |
data | пользовательские данные для передачи в | [allow-none] |
destroy | уведомление о удалении | [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 | ||
sensitivity | указать чувствительность кнопки раскрытия |
gtk_combo_box_get_button_sensitivity ()
GtkSensitivityType
gtk_combo_box_get_button_sensitivity (GtkComboBox *combo_box); Возвращает, устанавливает ли комбинация кнопок чувствительность раскрывающегося списка, когда в модели нет элементов.
Параметры
combo_box |
Возвращает
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 |
Возвращает
имеется ли поле ввода в 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 | ||
text_column | Столбец в |
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 | ||
fixed | использовать ли фиксированную ширину всплывающего окна |
gtk_combo_box_get_popup_fixed_width ()
gboolean
gtk_combo_box_get_popup_fixed_width (GtkComboBox *combo_box); Получает, использует ли всплывающее окно фиксированную ширину, соответствующую выделенной ширине комбинации кнопок.
Параметры
combo_box |
Возвращает
TRUE если всплывающее окно использует фиксированную ширину
gtk_combo_box_set_child ()
void gtk_combo_box_set_child (GtkComboBox *combo_box,GtkWidget *child);
Устанавливает дочерний виджет combo_box .
Параметры
combo_box | ||
child | дочерний виджет. | [allow-none] |
gtk_combo_box_get_child ()
GtkWidget *
gtk_combo_box_get_child (GtkComboBox *combo_box); Получает дочерний виджет combo_box .
Параметры
combo_box |
Возвращает
дочерний виджет 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);
};
Члены
| Сигнал генерируется при изменении активного элемента. | |
| Сигнал, который позволяет изменить способ отображения текста, отображаемого в поле ввода комбинации кнопок. |
перечисление 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 | ||
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 | данные пользователя, установленные при подключении обработчика сигнала |
Флаги: Действие
См. также
© 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