2017-01-27 4 views
4

私は最近、gnomeのWebサイト(下の最初のリンク)のチュートリアルに従って、GTK +(3)でGUIアプリケーションを作成する方法を学び始めました。GTKアプリケーションを書くための好ましい方法は何ですか?

私は最初の数組のチュートリアルを開始し、すべてがうまくいっていました。私はそれが望んでいたよう

#include <gtk/gtk.h> 

static void activate (GtkApplication* app, gpointer user_data){ 
    GtkWidget *window; 
    GtkWidget *button_box; 
    GtkWidget *button; 

    window = gtk_application_window_new (app); 
    gtk_window_set_title (GTK_WINDOW (window), "First application"); 
    gtk_window_set_default_size (GTK_WINDOW (window), 640, 480); 

    button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); 
    gtk_container_add(GTK_CONTAINER(window), button_box); 

    button = gtk_button_new_with_label("Click this!"); 
    g_signal_connect_swapped(button, "clicked", G_CALLBACK(g_print), "Hello, world!\n"); 
    g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window); 
    gtk_container_add(GTK_CONTAINER(button_box), button); 

    gtk_widget_show_all (window); 
} 

int main(int argc, char *argv[]){ 
    GtkApplication *app; 
    int status; 

    app = gtk_application_new ("com.example.application", G_APPLICATION_FLAGS_NONE); 
    g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); 
    status = g_application_run (G_APPLICATION (app), argc, argv); 
    g_object_unref (app); 

    return status; 
} 

すべてが正確に働いていた:ここで私が書いた初期のコードの一部です。その後、彼らはGtk Builderを導入しました。私はそれが本当にきれいだと思ったので、それを使ってアプリケーションを作成しました。

しかし突然、彼らはこれまでに書いたことのないようなものではないようなコードを書き始めました(下の2番目のリンク)。だから、私はかなり混乱して、他のソースからGTKアプリケーションをどのように書いているかを調べるために、いくつかのコードを調べることに決めました。 gtk_init()gtk_main()gtk_window_new(GTK_WINDOW_TOPLEVEL)のようなものを使って見ました。以前に投稿したコードのようには見えませんでした。

私が現在理解しているように、GtkApplicationまたはgtk_init()のいずれかを使用して、GTKアプリケーションを作成する方法は複数あります。それらの1つは時代遅れで、もはや好まれていないのですか?もしそうなら、どちらが優先されるべきか、または優先されるべきですか?

私は公式のGtkチュートリアルで見つかった二つの方法にいくつかのリンク:

答えて

7

新しいアプリケーションでは、GtkApplicationを使用することをおすすめします。古いコードはgtk_initgtk_mainを手動で呼び出します。

+1

GtkApplicationをGtkBuilderと組み合わせて使用​​するにはどうすればよいですか? – Zyphicx

+1

これは同じページに記述されています:GtkBuilderのuiファイルを作成し、オプションで、アプリケーションの配布を簡潔にするGResourceファイルを作成し、リソースをコンパイルし、gtk_widget_class_set_from_templateを呼び出して、リソース。これは、[「ウィンドウを生成する」](https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12。)セクションで説明されています。 – liberforce

関連する問題