GTK+ 2.0 Tutorial

<<< Previous

Разные виджеты (Miscellaneous Widgets)

Next >>>


Диалоги

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

struct GtkDialog { GtkWindow window; GtkWidget *vbox; GtkWidget *action_area; };

Вы видите, что создаётся обычное окно в которое в верху упаковывается  vbox, содержащий сепаратор и затем hbox вызываемый "action_area".

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

GtkWidget *gtk_dialog_new( void ); GtkWidget *gtk_dialog_new_with_buttons( const gchar *title, GtkWindow *parent, GtkDialogFlags flags, const gchar *first_button_text, ... );

Первая функция создаёт пустой диалог для дальнейшего использования. Вы можете упаковать кнопку action_area примерно так:

button = ... gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, TRUE, TRUE, 0); gtk_widget_show (button);

Вы также можете добавить область упаковки vbox для ярлыка:

label = gtk_label_new ("Dialogs are groovy"); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), label, TRUE, TRUE, 0); gtk_widget_show (label);

Как пример использования можно привести окно с ярлыком содержащим некий текст и двумя кнопками для того, чтобы пользователь смог сделать выбор между "OK" и "Сancel", создав тем самым определённый сигнал для выполнения дальнейших действий. 

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

Более сложный вариант complicated _new_with_buttons() позволяет установить один или более флагов.

GTK_DIALOG_MODAL
делает диалог модальным.
GTK_DIALOG_DESTROY_WITH_PARENT
гарантирует закрытие диалога вместе с родительским окном.
GTK_DIALOG_NO_SEPARATOR
опускает сепаратор между vbox и action_area.

<<< Previous

Home

Next >>>

Progress Bars

Up

Rulers