Как я могу вставить Gtk :: Plug в Gtk Socket? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть окно.В этом окне я хочу две кнопки.Один будет плагином, а другой просто нормальным.

Я делаю следующее

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 ::Подключить розетку?

1 Ответ

0 голосов
/ 09 апреля 2019

Как написано в документации :

GtkSocket должен быть уже добавлен в окно верхнего уровня, прежде чем вы сможете сделать этот вызов.

Итак, ваш код должен быть:

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