LinuxSir.cn,穿越时空的Linuxsir!

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

glade gtkmm问题

[复制链接]
发表于 2007-7-15 16:33:35 | 显示全部楼层 |阅读模式
正在练习用glade作界面,用gtkmm写功能代码,碰到一点问题。
根据gtkmm的文档,要将c++代码中的控件与glade生成的界面中的控件联系起来需要使用这种格式

Glib :: RefPtr<Gnome::Glade::Xml> refXml = Gnome::Glade::Xml::create("basic.glade");
Gtk :: Dialog* pDialog = 0;
refXml->get_widget("DialogBasic", pDialog);

get_widget()的第二参数必须是一个控件类型的指针,所以在定义控件时就将它定义成指针。

我不喜欢用指针定义控件,喜欢用普通变量,而且使用指针的话,我重用以前的gtkmm代码就要逐个修改成员函数调用,很繁的,有办法吗?
发表于 2007-7-16 11:09:00 | 显示全部楼层
  1. Gtk::Dialog myDialog;
  2. refXml->get_widget("DialogBasic", &myDialog);
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-16 17:12:46 | 显示全部楼层

re

Post by manphiz

  1. Gtk::Dialog myDialog;
  2. refXml->get_widget("DialogBasic", &myDialog);
复制代码


行不通,我一开始就试过了。

也可能是我哪里没弄对,下面是个hello world程序,你可以测试看看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2007-7-16 19:23:29 | 显示全部楼层
查了下 libglademm/xml.h ,发现 Gnome::Glade::Xml::get_widget 是这么定义的:
  1.   template <class T_Widget> inline
  2.   T_Widget* get_widget(const Glib::ustring& name, T_Widget[color=red]*&[/color] widget)
复制代码
所以,它只能接受指针。使用 get_widget(const Glib::ustring& name) 的返回值进行转换似乎也不行。看来只能直接使用指针了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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