当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 问几个GTK编程的问题
帖子发表于 : 2008-04-09 11:34 

注册: 2006-11-15 10:04
帖子: 79
送出感谢: 0 次
接收感谢: 0 次
1文档中那些GtkWidget的Style Properties怎么设置?
好像只能设置Properties, 我找不到设置Style Properties的方法

2关于statusicon的弹出菜单
我是用这样的语句弹出的
gtk_menu_popup(menu, NULL, NULL,
gtk_status_icon_position_menu, status_icon, -1, gtk_get_current_event_time());
在windows下有些奇怪(看附件)
第一是弹出的位置好像有点奇怪, 一般菜单的一个角在鼠标指针上, 是靠鼠标坐标来定位置的, 而我这个好像是按照屏幕边缘来定位置
第二是弹出后会出现上下滚动的箭头, 把鼠标放上去后才能显示出所有的item
这个使用同样的gtk runtime, pidgin的就没有这两个问题
而且同样的代码, 在linux中显示也正常

3关于glade_xml_signal_autoconnect
看说明如果回调函数放在主程序中, 就需要让主程序能导出符号, 像动态链接库一样, gcc可以用-export-dynamic, 我还没有试过在linux下怎么样, 在windows下mingw gcc4.3试过, 好像没用, vc的编译器好像没有这个功能. 不知道谁用过这个.


附件:
文件注释: pidgin的, 刚刚点出来不会出现滚动箭头, 也不会以屏幕边缘来定位置
Snap3.png
Snap3.png [ 2.8 KiB | 被浏览 1436 次 ]
文件注释: 位置, 以屏幕边缘来定的
Snap2.png
Snap2.png [ 3.59 KiB | 被浏览 1437 次 ]
文件注释: 刚刚点出来的样子
Snap1.png
Snap1.png [ 863 Bytes | 被浏览 1436 次 ]
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-09 12:08 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
引用:
glade_xml_signal_autoconnect
没用。在特定情况下才可以。只是这情况搞不清。

引用:
Style Properties
就是signal。glade的设置,和版本有关,比如自动生成代码。

这说不清的。建议找一个现成的,带glade文件的例子。一看就知道了。随便下一个源码。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-09 14:05 

注册: 2006-11-15 10:04
帖子: 79
送出感谢: 0 次
接收感谢: 0 次
我的菜单是动态生成的, gtk_menu_new出来的, 怎么设style property?


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-09 15:45 

注册: 2006-11-15 10:04
帖子: 79
送出感谢: 0 次
接收感谢: 0 次
发现了, style property好像都是只读的.


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-09 16:51 

注册: 2006-11-15 10:04
帖子: 79
送出感谢: 0 次
接收感谢: 0 次
我在菜单里添加了好多个项目, 就是把菜单加高了, 貌似找到一点问题
如果把任务栏放到了桌面的顶端, 就正常了
如果任务栏在下面, 菜单的主窗口大小是对的, 鼠标移到滚动箭头上, 下面的item会滑上来, 滑动结束后滚动箭头消失

也就是说, 菜单主窗口位置和大小没有问题, 但是菜单里的项目的位置都是按照菜单左上角位置==鼠标指针位置来定的, 所以出现了滚动箭头.
这不知道是不是gtk_status_icon_position_menu的bug


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-09 20:32 

注册: 2006-11-15 10:04
帖子: 79
送出感谢: 0 次
接收感谢: 0 次
看来这个问题早就有了
http://bugzilla.gnome.org/show_bug.cgi?id=406062

一直没有解决..


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-10 10:17 

注册: 2005-10-20 9:19
帖子: 86
送出感谢: 0 次
接收感谢: 0 次
关于glade_xml_signal_autoconnect,我没用glade,不过GtkBuilder也有类似的函数。

在windows里,默认不会导出函数,所以要添加 __declspec(dllexport),在exe项目中也一样添加这个符号.

如果用c++,则要加 extend "C"。

举个例子,在puss项目里:

1. 在头文件里定义了(SIGNAL_CALLBACK):

代码:
#ifdef  __cplusplus
#   define __EXTERN_C extern "C"
#else
#   define __EXTERN_C
#endif

#ifdef G_OS_WIN32
#   define   PUSS_EXPORT      __EXTERN_C __declspec(dllexport)
#else
#   define   PUSS_EXPORT      __EXTERN_C
#endif


#define   SIGNAL_CALLBACK   PUSS_EXPORT


使用时:
代码:

// 定义signal回调函数
//
SIGNAL_CALLBACK void file_menu_new( GtkAction* action ) {
   puss_doc_new();
}

// 加载xml文件时:
GtkBuilder* builder = xxx;

gtk_builder_connect_signals(builder, tag);


[/code]


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译