【问题标题】:How can I embed a Gtk::Plug in a Gtk Socket?如何在 Gtk 套接字中嵌入 Gtk::Plug?
【发布时间】:2019-02-08 12:39:00
【问题描述】:

我有我的窗口。在这个窗口中,我想要两个按钮。一个是插头,另一个是正常的。

我做了以下

plug.cc

#include <gtkmm.h>
#include <gtkmm/plug.h>

class PlugButton : public Gtk::Plug{
public:
    PlugButton(){add(button); id = get_id();}
    int id;
    Gtk::Button button{"Plug Button"};
}  

main.cc

Gtk::HBox box;
Gtk::Button button{"Normal Button"};
Gtk::Socket socket;// I have included gtkmm/socket.h
PlugButton plug;
box.pack_start(button);
box.pack_end(socket);
socket.add_id(plug.id);
window.add(box);
window.show_all_children();

这可以编译,但我得到了

gtk_socket_add_id: assertion '_gtk_widget_get_anchored (GTK_WIDGET (socket))' failed

如何将 Gtk::Plug 的实例嵌入到套接字中?

【问题讨论】:

    标签: c++ gtk3 gtkmm3 xembed


    【解决方案1】:

    documentation中所写:

    GtkSocket 必须已经被添加到顶层窗口中 你可以打这个电话。

    所以你的代码应该是:

    window.add(box);
    socket.add_id(plug.id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2011-06-03
      相关资源
      最近更新 更多