在GTK中为动作添加有效键盘快捷键时应用崩溃的原因?
GTK应用设置
<Ctrl>n类快捷键时崩溃问题 调用gtk_application_set_accels_for_action为GTK动作添加<Ctrl>n这类键盘快捷键时,应用会直接崩溃,示例代码如下:
// "app" 和 "handler" 已提前定义 const char *action_id = "action"; const char *full_id = "app.action"; // 移除"Ctrl"(改为{"<>n"}) // 或者添加一个无效快捷键(改为{"<Ctrl>n", "<>f"}) // 应用就不会崩溃 const char *keyboard_shortcuts[] = { "<Ctrl>n" }; GSimpleAction *action = g_simple_action_new (action_id, NULL); g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (action)); g_signal_connect (action, "activate", G_CALLBACK (handler), NULL); // 移除下面这行代码,应用就不会崩溃 gtk_application_set_accels_for_action (GTK_APPLICATION (app), full_id, keyboard_shortcuts);
补充现象
- 将键盘快捷键改为无效内容(如
<>n),应用可正常启动,但所有快捷键无法生效。 - 在快捷键数组中添加无效项(如
{"<Ctrl>n", "<>f"}),应用可正常启动,但所有快捷键无法生效。
内容的提问来源于stack exchange,提问作者david-swift
相关产品推荐
相关产品推荐

