最简单的Gtk :: Builder get_widget()编程出错

时间:2012-01-30 19:44:42

标签: c++ linux gtk builder

这是我的计划:

#include <gtkmm.h>

int main (int argc, char* argv[])
{
Gtk::Main gtkmain(argc, argv);

Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("practice_1_builder.glade");

Gtk::Window win;
builder->get_widget("winobj", win);
Gtk::Main::run(win);

return EXIT_SUCCESS;
}

我在终端中使用这个命令来编译它,因为我用于任何其他GTK +程序我可以正确编译:

g++ myprog.cpp -o myprog `dpkg-config --cflags --libs gtkmm-3.0`

我收到了这个错误:

builder_0.cpp: In function ‘int main(int, char**)’:
builder_0.cpp:10:35: error: no matching function for call to ‘Gtk::Builder::get_widget(const char [7], Gtk::Window&)’
builder_0.cpp:10:35: note: candidate is:
/usr/include/gtkmm-3.0/gtkmm/builder.h:435:8: note: template<class T_Widget> void    Gtk::Builder::get_widget(const Glib::ustring&, T_Widget*&)

我尝试了很多twiddles,将win定义为指针,将字符串文字转换为Glib::ustring,...,但不起作用。 欣赏有帮助! : - )

1 个答案:

答案 0 :(得分:3)

这个消息对我很清楚。 T_Widget *放大器;意味着,您必须传递(引用)指针。我将您的代码更改为:

Gtk::Window *win;
builder->get_widget("winobj", win);
Gtk::Main::run(*win);

现在它应该按预期工作。