GTK+ 2.0 Tutorial |
||
---|---|---|
Разные виджеты (Miscellaneous Widgets) |
Виджет диалога очень простой, фактически это просто окно с пред упакованными виджетами. Структура диалога такова:
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() позволяет установить один или более флагов.
Progress Bars |
Rulers |