c - 如何防止按钮默认获得焦点

标签 c gtk2

我正在使用 GTK+2 作为 C 语言的 GUI。我的代码中有 10x10 的按钮表。当我运行代码时,第一个按钮 (button[0][0]) 默认情况下处于焦点状态。那么我怎样才能防止这个按钮默认获得焦点呢?

代码:

table = gtk_table_new(10, 10, TRUE);

for (int row=0; row<10; row++) {
    for (int col=0; col<10; col++) {
        button[row][col] = gtk_button_new_with_label(" ");
        g_signal_connect(G_OBJECT(button[row][col]), "button-release-event", G_CALLBACK(buttonClicked), NULL);
        gtk_button_set_focus_on_click(GTK_BUTTON(button[row][col]), FALSE);
        gtk_table_attach_defaults(GTK_TABLE(table), button[row][col], col, col+1, row, row+1);
    }
}

最佳答案

当您显示窗口时,请在您想要聚焦的小部件上调用 gtk_widget_grab_focus()

如果您根本不希望网格中的按钮能够获得焦点,请对它们调用 gtk_widget_set_can_focus()

关于c - 如何防止按钮默认获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38667687/

相关文章:

c - 用于读取堆栈值的 Linux 工具

c - 如何修复隐式有符号到无符号转换,警告 373

单击鼠标更改图像

ruby - 打包 ruby​​ gtk 应用程序

user-interface - OCaml+LablGTK2 : Multi-Line Text Box

widget - 远程控制/检查现有 GTK 应用程序

c - 如何在 GTK+ 2 中将 GtkButton 引用到 GtkNotebook 的多个页面

c - 我的程序崩溃了,我不明白为什么它甚至没有到达第一个 printf

c - strncpy 复制超过 n 个字符

c++ - C++ 中的缓冲区大小