处理 "add child to Gtk.Box" 事件

Handle "add child to Gtk.Box" event

据我所知,我可以订阅 Gtk.Box 信号 "add child":

box.connect("add", self.__add_to_switch_list)

当我通过 box.add(child) 添加子项时将调用它,它正在工作。

但是我如何用 box.pack_start() 方法做同样的事情?

没有办法。


"add" 仅在您调用 GtkContainer.add() 时发出。 此信号的第一个处理程序是子类的方法。例如,GtkBox 这样做:

/* gtk_box_class init: */
container_class->add = gtk_box_add;
...

static void
gtk_box_add (GtkContainer *container,
         GtkWidget    *widget)
{
  GtkBoxPrivate *priv = GTK_BOX (container)->priv;

  gtk_box_pack_start (GTK_BOX (container), widget,
                      priv->default_expand,
                      TRUE,
                      0);
}

very same bug report 中,@ebassi 告诉您可以连接到 child 小部件的 parent-set 信号。如果您不知道 parent 何时有新的 child,您可以知道 child 何时有新的 parent,这大致相同。