LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1578|回复: 18

请教gtk编程

[复制链接]
发表于 2004-8-19 13:59:59 | 显示全部楼层 |阅读模式
请问
GtkObject*  gtk_adjustment_new              (gdouble value,
                                             gdouble lower,
                                             gdouble upper,
                                             gdouble step_increment,
                                             gdouble page_increment,
                                             gdouble page_size);
中lower,和upper参数是设置什么的?
看了gtk相关的文档还是看不懂
发表于 2004-8-19 14:29:27 | 显示全部楼层
最大值,最小值

比如当adjustment应用于一个滚动条时 ,滚动条的某个位置就对应一个数字value,lower和upper规定了这个数字的上下界,即当 value 增长到 upper时就不再增长,当 value 减小到 lower 时就不再减小
 楼主| 发表于 2004-8-19 15:05:58 | 显示全部楼层
那如果adjustment应用到布局容器中时:
        vertAdj=(GtkAdjustment *)gtk_adjustment_new(
                0.0 , 0.0 , 100.0 , 1.0 , 10.0 , 20.0);
        horizAdj=(GtkAdjustment *)gtk_adjustment_new(
                0.0 , 0.0 , 1000.0 , 1.0 , 10.0 , 20.0);
        layout=gtk_layout_new(horizAdj , vertAdj);
        gtk_layout_set_size(GTK_LAYOUT(layout) , 2000 , 200);
        vscroll=gtk_vscrollbar_new(vertAdj);
        hscroll=gtk_hscrollbar_new(horizAdj);
滚动条调整的范围好像是由布局容器所设置的大小所确定的
发表于 2004-8-19 16:50:08 | 显示全部楼层
gtk_layout_set_size(GTK_LAYOUT(layout) , 2000 , 200);

这个设置的是可滚动的区域,不是那个value的范围,但两个范围之间是有映射关系的

在upper和lower不变的情况下,假设滚动同样的距离,如果滚动范围大,则value的值变化小;滚动范围小,则value值变化大;滚到头的时候,value就等于upper(或lower)

比如用一个滚动条来控制音量,可以用value来表示音量(0-100),而滚动条的可滚动区域只有10,则每滚动一小格,音量加10,滚动到最大端的时候音量等于100,即value的大小取决于滚动条的位置,但value的范围并不决定滚动范围

说的不一定全对,好久没用gtk了,你试试看
 楼主| 发表于 2004-8-19 21:19:17 | 显示全部楼层
好像不对啊.
即使我设成 horizAdj=(GtkAdjustment *)gtk_adjustment_new(
0.0 , 0.0 , 1.0 , 1.0 , 10.0 , 20.0);
每滚一格还是跟原来的一样
发表于 2004-8-20 08:47:45 | 显示全部楼层
那你的滚动条滚到两头的时候gtk_adjustment_get_value()出来的value值是多少?如果不是0,有可能是layout自己调整过了
 楼主| 发表于 2004-8-20 13:14:15 | 显示全部楼层
我现在程序里有这么一句:
gdouble v=gtk_adjustment_get_value(GTK_ADJUSTMENT(pc->v));
而且include<gtk/gtk.h>
可是编译的时候出险了下面的错误:
[zd@localhost test]$ gcc -Wall -ggdb3 `gtk-config --cflags` -c test.c
test.c: In function `buttonClick':
test.c:65: warning: implicit declaration of function `gtk_adjustment_get_value'
[zd@localhost test]$ gcc `gtk-config --libs` test.o -o test
test.o(.text+0x33b): In function `buttonClick':
/home/zd/storage/program/test/test.c:65: undefined reference to `gtk_adjustment_get_value'
test.o(.text+0x36f):/home/zd/storage/program/test/test.c:66: undefined reference to `gtk_adjustment_get_value'
collect2: ld returned 1 exit status
发表于 2004-8-20 14:32:48 | 显示全部楼层
没有链接相应的库
发表于 2004-8-20 16:04:52 | 显示全部楼层
这个俺也不太清楚,不过你用的gtk-config是配置1.0版本的,2.0的用

pkg-config --libs gtk+-2.0
pkg-config --cflags gtk+-2.0
 楼主| 发表于 2004-8-20 16:13:19 | 显示全部楼层
pkg-config --libs gtk+-2.0这样的命令是错误的
库名只能是gtk或gthread
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表