- 我创建了一个 gtk 滚动窗口。
- 我附加了一个 gtk TreeView
- 我已经为垂直滚动目的创建了 gtk 调整
- 我已经创建了 gtk 垂直滚动条并进行了调整 上面创建的。
- 我用一些数据填充了 TreeView 。
- 我试图在滚动条向上或向下移动时捕获信号 使用:
gtk_signal_connect(GTK_OBJECT(vscrollbar), "value_changed",G_CALLBACK(my_function),NULL);
我的信号处理程序如下所示:
void my_function(GtkWidget *widget)
{
printf("Hi\n");
}
如上所示,每当滚动条向上移动一步或向下移动一步时,它都会打印一个 Hi
。
但我想在向上移动时打印 up
或在向下移动时打印 down
。
void my_function(GtkWidget *widget)
{
if(/* movement is up, How to identify? */)
printf("UP\n");
if(/* movement is down, How to identify */)
printf("DOWN\n");
}
对于 gtk 编程,我是一个全新的人。 有人可以建议我为此需要做什么吗?
最佳答案
首先,建议:检查最新的 API 引用,即使您必须使用旧的库。这将帮助您避免编写已经过时的代码(对于任何使用当前 GTK+ 的人来说,gtk_signal_connect 和 GTK_OBJECT 看起来相当......古老)。如果您确实可以使用当前的 GTK+,那就这样做。
对于您的问题,您是正确的,API 没有告诉您变化的方向或幅度。您可以在信号处理程序中使用“static gdouble last_value”,并将其与当前值进行比较以找出方向(并且不要忘记在之后设置last_value :))。
关于c - 识别gtk中滚动条的向上/向下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17088586/