如何禁用 GtkMenuItem?

How do I disable a GtkMenuItem?

我有一个菜单项,如果满足特定条件我想将其禁用。 换句话说,防止它被点击。仍然可见,但通常变灰或类似。

手动建立的菜单类似于:

void menu_action(GtkMenuItem* menuitem, gpointer menu_id){
  printf("You selected menu id: %d\n", GPOINTER_TO_INT(menu_id));
}

void make_menu(){
  GtkWidget *menu  = gtk_menu_new();
  GtkWidget *login = gtk_menu_item_new_with_label("Login");
  GtkWidget *quit  = gtk_menu_item_new_with_label("Quit");

  gtk_menu_shell_append(GTK_MENU_SHELL(menu), login);
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), quit);

  g_signal_connect(G_OBJECT(login), "activate", G_CALLBACK(menu_action), GINT_TO_POINTER(-100));
  g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(menu_action), GINT_TO_POINTER(-101));
}

假设选择了“登录”。我想做的是执行登录操作,将菜单项标签更改为登录人的用户名,然后将其禁用,使其无法点击。我该怎么做?

他们选择使用 'sensitive' 这个词来描述这种行为:

gtk_widget_set_sensitive(login, FALSE);
gtk_menu_item_set_label(GTK_MENU_ITEM(login), "Logged In: Matt");