c++ - 最简单的 Gtk::Builder get_widget() 程序出错

标签 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*&)

我尝试了很多技巧,将 win 定义为指针,将字符串文字转换为 Glib::ustring,...,但没有成功。 赞赏有帮助! :-)

最佳答案

这个消息对我来说非常清楚。 T_Widget*& 意味着,你必须传递一个(对一个)指针。我将您的代码更改为:

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

现在它应该按预期工作了。

关于c++ - 最简单的 Gtk::Builder get_widget() 程序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069780/

相关文章:

c++ - 将 vector 存储和写入队列c++

c++ - 禁止碰撞的 unordered_map

linux - 来自守护程序 : "Conflict ... already in use by container" 的 Docker 错误响应

python - 使用 Python(PyQt、PyGTK、wxPython、IronPython 等)创建 GUI 的最佳库

C++ 将对象传递给函数

c++ - Boost.Log 忽略重载的流插入运算符

c++ - 如何获取c++自己的目录?

linux - IPSec VPN 客户端 Linux

c++ - (Gnome) 桌面通知如何工作?

c++ - 将额外值传递给 GTK+ 中的信号