linux - 如何禁用 GtkMenuItem?

标签 linux gtk

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

菜单是手动建立的,类似这样:

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/

相关文章:

c - 当我使用 pthread 时,新窗口不会打开

c - 编译器 gcc 错误 : undefined reference to `main'

我们可以将 bzip2 block 大小减少到 100KB 以下吗?

python - pygtk 在 Windows XP 中崩溃

rust - 为什么在闭包内克隆数据不能防止错误 "closure may outlive the current function"?

c# - 如何在 Eto 中捕获没有文本框的键盘输入

linux - 如何使用 iperf 从 bash 输出中获取选定的文本

python - 在树莓派上记录 python 错误

linux - 将 git 命令与 -q 一起使用,但在失败时不会保持安静?

c++ - GTK 滚动窗口 - 滚动到底部