0
  1. 我创建了一个 gtk 滚动窗口。
  2. 我在上面附加了一个 gtk 树视图
  3. 我为垂直滚动创建了 gtk 调整
  4. 我已经创建了 gtk 垂直滚动条和上面创建的调整。
  5. 我用一些数据填充了树视图。
  6. 当滚动条向上或向下移动时,我试图捕捉信号:

gtk_signal_connect(GTK_OBJECT(vscrollbar), "value_changed",G_CALLBACK(my_function),NULL);

我的信号处理程序如下所示:

void  my_function(GtkWidget *widget)
{
printf("Hi\n");
}

如上所示,Hi只要滚动条向上或向下移动一步,它就会打印 a 。但是我想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 编程方面,我是一个全新的人。有人可以建议我为此需要做什么吗?

4

1 回答 1

1

首先,一个建议:检查最新的 API 参考,即使您必须使用旧库。这将帮助您不要编写已经过时的代码(gtk_signal_connect 和 GTK_OBJECT 看起来很......对于任何使用当前 GTK+ 的人来说都是古老的)。如果你真的可以使用当前的 GTK+,那就这样做吧。

至于您的问题,您是正确的,API 没有告诉您更改的方向或幅度。您可以在信号处理程序中使用“静态 gdouble last_value”并将其与当前值进行比较以找出方向(并且不要忘记在此之后设置 last_value :))。

于 2013-06-13T18:15:12.920 回答