диалоги
виджет
диалога очень простой, фактически это
просто окно с пред упакованными виджетами.
структура диалога такова:
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.
|