gpt4 book ai didi

c - 除非光标位于滚动条上方,否则 GtkScrolledWindow 不响应鼠标滚轮

转载 作者:行者123 更新时间:2023-11-30 16:33:34 25 4
gpt4 key购买 nike

我有一个C GTK3 application使用GtkScrolledWindow里面有一个 GtkGrid 。我对一切的布局方式感到满意,但是如果光标位于滚动条上,或者如果我用光标移动滚动条,则 ScrolledWindow 仅通过鼠标滚轮滚动。我正在寻找的行为是,当使用鼠标滚轮或至少当光标位于 ScrolledWindow 上时(这是我认为默认的情况),鼠标滚轮始终滚动 ScrolledWindow。

这是创建 ScrolledWindow 的位置:

scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scroll), BANNER_HIGHT * 4);

( The location of these lines in the application (GitHub) )

我现在想知道我是否必须通过 GtkAdjustment到构造函数,但似乎所做的只是设置滚动边界。我还想知道是否可以在主窗口上连接 mousescroll 事件并尝试在回调上手动触发它,但我也没有看到这样做的方法。

最佳答案

这实际上似乎是 GTK 和/或操作系统 (Ubuntu) 中的一个错误,我试图在笔记本电脑的触控板上使用多点触控滚动手势进行滚动,但不起作用。今天,我碰巧有一个插入了实际滚轮的普通鼠标,并发现它工作得很好。

更新:我通过订阅滚动事件并使用 GtkAdjustment 手动调整滚动窗口来添加我正在寻找的行为:

bool scroll_entrires(GtkWidget * widget, GdkEvent * event, gpointer data) {
double delta_x, delta_y; // delta_y is not used
if (gdk_event_get_scroll_deltas(event, &delta_x, &delta_y)) {
GtkAdjustment * adj = gtk_scrolled_window_get_vadjustment(
GTK_SCROLLED_WINDOW(scroll));
gtk_adjustment_set_value(adj,
gtk_adjustment_get_value(adj) + 30 * delta_y);
// 30 is a number that I like for my setup but can
// be changed for other situations.
return true; // We have responded to the event
}
return false; // Let other handlers respond to this event
}

// ... (In my init code)

g_signal_connect(window, "scroll-event", G_CALLBACK(scroll_entries), NULL);

关于c - 除非光标位于滚动条上方,否则 GtkScrolledWindow 不响应鼠标滚轮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49709229/

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