The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

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






Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру