1

C言語でGTK4を使ってアプリケーションを作っています。いくつかのアクションをメニュー項目に関連付けようとしていますが、そのような項目は非アクティブです。つまり、表示されている間はクリックできません。この問題を解決する方法がわからないので、助けていただければ幸いです。

コードの一部を以下に示します。

#include <gtk/gtk.h>

int main(int argc, char **argv)
{
    int status;
    
    application = gtk_application_new("gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect_swapped(application, "active" G_CALL_BACK(create_window), application);

    status = g_application_run(G_APPLICATION(application),argc,argv);
    g_object_unref(application);
    return status;
}

void create_window(GtkApplication *application)
{
    GMenu *menubar;
    GMenu *menu;
    GMenuItem *item;

    window = gtk_application_window_new(application);
    gtk_window_set_application(GTK_WINDOW(window),application);
    
    const GActionEntry entries[] =
    {
        {"close", quit}
    };
    g_action_map_add_action_entries(G_ACTION_MAP(application), entries, G_N_ELEMENTS(entries),NULL);

    menubar = g_menu_new();
    menu = g_menu_new();
    item = g_menu_item_new("Close", "app.close");
    g_menu_append_item(menu,item);
    g_object_unref(item);
    
    g_menu_append_submenu(menubar, "File", G_MENU_MODEL(menu));
    g_object_unref(menu);

    gtk_application_set_menubar(application, G_MENU_MODEL(menubar));
    gtk_application_window_set_show_menubar(GTK_APPLICATION_WINDOW(window),TRUE);
    gtk_window_present(GTK_WINDOW(window));        
}

static void quit(GSimpleAction *action, GVariant *parameter, gpointer data)
{
    g_print("You choose close action\n");
}

私が得た結果は以下です。閉じるはクリックできません。

ここに画像の説明を入力

4

1 に答える 1