gpt4 book ai didi

c - GtkButton 发出 GDK_KEY_PRESS

转载 作者:行者123 更新时间:2023-11-30 15:31:21 34 4
gpt4 key购买 nike

我尝试使用以下小部件结构、信号连接和回调将与 GtkTextView 支持的击键相关的信号(CTRL+a、CTRL+x 等)附加到工具栏按钮:

typedef struct
{
GtkWidget *window;
GtkWidget *text_view;
}EditorWidgets;

//...

g_signal_connect(cut, "clicked", G_CALLBACK(cut_button_press), editor_widgets);

//...

static void cut_button_press(GtkWidget *button, EditorWidgets *editor_widgets)
{
UNUSED(button);

GdkEvent *event = gdk_event_new(GDK_KEY_PRESS);

event->key.window = gtk_widget_get_window(editor_widgets->window);
event->key.send_event = FALSE;
event->key.time = 0;
event->key.state = GDK_CONTROL_MASK;
event->key.keyval = GDK_KEY_x;
event->key.string = g_strdup("x");
event->key.length = strlen(event->key.string);

gtk_main_do_event(event);

gdk_event_free(event);
}

运行时,GDK 会提示以下内容:

(ex1:7856): Gdk-WARNING **: Event with type 8 not holding a GdkDevice. It is most likely synthesized outside Gdk/GTK+

这让我知道我错误地创建了信号(我假设)。然而,关于让按钮发出 GDK 信号的资料很少,所以我对这里缺少的东西感到茫然。

作为第二个问题,我记得在某处读过,有一个用于 TIME_NOW 的 GDK #define 或其他东西,但我再也找不到它了。有什么提示吗?

最佳答案

1.使用“key-press-event”代替clicked,clicked与鼠标指针和键盘回车键相关联,类似于(在python中):

   def on_key_press (self, widget, event):
if event.keyval == 120:
print ('test')

2.GDK_CURRENT_TIME,在Gdk.Event类中定义

关于c - GtkButton 发出 GDK_KEY_PRESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874744/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com