gtk界面學習——顯示中文提示框

gtk界面中會遇到dialog中文化的需求(自帶的窗口是英文的),給大家帶上中文接口,省的大家去查資料了~

#include <gtk/gtk.h>

void button_clicked1(GtkWidget *button, gpointer data) {

    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(data),
                             GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
                             GTK_BUTTONS_OK, "學習筆記");
    gtk_window_set_title(GTK_WINDOW(dialog), "WARNING");
    gtk_message_dialog_format_secondary_text(
    GTK_MESSAGE_DIALOG(dialog), "http://aabbccddeeff.aabbcc.com");
    gtk_dialog_run(GTK_DIALOG(dialog));
    gtk_widget_destroy(dialog);
}

void button_clicked2(GtkWidget *button, gpointer data) {

    GtkWidget *dialog =
        gtk_message_dialog_new (GTK_WINDOW(data),
                GTK_DIALOG_DESTROY_WITH_PARENT,
                GTK_MESSAGE_QUESTION,
                GTK_BUTTONS_OK_CANCEL,
                ("\n        是否確定重啓虛擬機        "));

    gtk_button_set_label((GtkButton *)gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL), "取消");
    gtk_button_set_label((GtkButton *)gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK),     "確定");
    gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL);
    gint result = gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);
    switch (result) {
        case GTK_RESPONSE_OK:
            break;
        default:
            break;
    }
}

int main(int argc, char *argv[]) {

    gtk_init(&argc, &argv);
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkMessageDialog");
    gtk_widget_set_size_request(window, 300, 200);

    GtkWidget *button1 = gtk_button_new_with_label("默認顯示窗口");
    GtkWidget *button2 = gtk_button_new_with_label("中文顯示窗口");

    GtkWidget *fix = gtk_fixed_new();
    gtk_fixed_put((GtkFixed *)fix, button1, 83, 42);
    gtk_fixed_put((GtkFixed *)fix, button2, 83, 122);
    gtk_container_add(GTK_CONTAINER(window), fix);

    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(G_OBJECT(button1), "clicked",
                     G_CALLBACK(button_clicked1), window);
    g_signal_connect(G_OBJECT(button2), "clicked",
                     G_CALLBACK(button_clicked2), window);

    gtk_widget_show_all(window);

    gtk_main();

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章