如果满足某些条件,我想禁用一个菜单项。 换句话说,防止它被点击。仍然可见,但通常变灰或类似。
菜单是手动建立的,类似这样:
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));
}
让我们假设,登录被选中。我想做的是执行登录操作,将菜单项标签更改为登录人的用户名,然后将其禁用,使其无法点击。我该怎么做?
最佳答案
他们选择使用“敏感”一词来描述这种行为:
gtk_widget_set_sensitive(login, FALSE);
gtk_menu_item_set_label(GTK_MENU_ITEM(login), "Logged In: Matt");
关于linux - 如何禁用 GtkMenuItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680071/