У меня есть этот код для отображения диалогового окна сообщения:
void mensajeVentana (GtkWidget *wid, GtkWidget *win, gchar *mensaje) {
GtkWidget *dialog = NULL;
GtkWidget *image;
dialog = gtk_message_dialog_new(GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, mensaje);
image = gtk_image_new_from_icon_name ("computer-fail", GTK_ICON_SIZE_DIALOG);
gtk_widget_show (image);
gtk_message_dialog_set_image(GTK_MESSAGE_DIALOG(dialog), image);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
Диалоговое окно Изображение устарело!
При компиляции у меня появляется следующее сообщение с предупреждением:
‘gtk_message_dialog_set_image’ is deprecated [-Wdeprecated-declarations]
Я использую следующие версии g cc и GTK:
- g cc версия 8.3.0 (Debian 8.3.0-6)
- GTK3, libgtk-3-0: amd64 3.24.5-1
Я исследовал вопрос о замене 'gtk_message_dialog_set_image', единственной помощью, которую я нашел, была документация, которая гласит:
gtk_message_dialog_get_image has been deprecated since version 3.12 and should not be used in newly-written code.
Use GtkDialog for dialogs with images
Gets the dialog’s image.
Но кроме этого я не нашел ни одного примера о том, как отобразить значок с диалоговым окном сообщения с использованием GTK3 без функции: 'gtk_message_dialog_set_image'.
Есть идеи? Спасибо!
ОБНОВЛЕНИЕ. Я написал следующий код благодаря предложениям Александра Дмитриева:
void mensajeVentana (GtkWidget *wid, GtkWidget *win, gchar *mensaje) {
GtkWidget *dialog = NULL;
GtkWidget *image, *content_area, *box, *label;
dialog = gtk_dialog_new_with_buttons ("Alerta",
GTK_WINDOW(win),
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
"Cerrar",
GTK_BUTTONS_CLOSE,
NULL);
content_area = gtk_dialog_get_content_area (dialog);
box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1);
label = gtk_label_new (mensaje);
image = gtk_image_new();
gtk_image_set_from_icon_name (image, "computer-fail", GTK_ICON_SIZE_DIALOG);
gtk_widget_show (image);
gtk_box_pack_start (box, image, TRUE, TRUE, 1);
gtk_container_add (content_area, box);
gtk_container_add (content_area, label);
gtk_widget_show_all (dialog);
}
Тем не менее, есть две проблемы:
- Прикрепленное изображение вверху, а не в центре слева.
- Кнопка закрытия не закрывает диалоговое окно, ничего не делает.
Как я могу решить эти две проблемы?