gtk +在窗口级使用按键信号,但在子控件级别阻止特定的按键信号

时间:2012-07-05 01:39:03

标签: gtk signals

我正在使用vte在gtk +中创建终端应用程序。当我创建一个选项卡并使用ctrl + t组合键将其添加到笔记本时,它会在选项卡中按预期添加一个带有新终端的选项卡。然而,按键信号也通过终端并在命令提示符之前显示为“^ T”以及系统蜂鸣声。如何在窗口级使用按键信号,这样我就可以添加标签,但是在终端级阻止这个特定的按键信号?这是一段代码,显示了它是如何组装的:

  window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  vte = vte_terminal_new();
  terminal = VTE_TERMINAL (vte);

  notebook = gtk_notebook_new ();

  vbox = gtk_vbox_new(FALSE,0);
  gtk_container_add (GTK_CONTAINER (window_main), vbox);
  gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);  

  scrollwin[0] = gtk_scrolled_window_new (NULL, terminal->adjustment);
  gtk_container_add(GTK_CONTAINER(scrollwin[0]),vte);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin[0]), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  label = gtk_label_new ("term1");
  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrollwin[0], label);

感谢。

1 个答案:

答案 0 :(得分:1)

Windows在keypress事件中获得第一次破解,然后他们进入焦点链。任何返回true的信号处理程序都会停止此传播。因此,如果在处理true(或任何其他不希望传播的按键)时从keypress信号处理程序返回ctrl-t,则应使其不会转到术语小部件。