【发布时间】:2011-04-29 15:36:00
【问题描述】:
我想复制一个通过 GtkBuilder 加载的 GtkWidget
我的问题是告诉 Gtk 将它打包到它已经存在的同一个 vbox 中会导致错误,我不知道如何复制它。我想这涉及弄乱指针和引用,这可能就是我错过重点的原因。
static GtkWidget *my_widget(){
GtkBuilder *builder;
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "widget.glade", NULL);
return GTK_WIDGET (gtk_builder_get_object (builder, "widget"));
}
int
main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *widget;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "userinterface.glade", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "mainwindow"));
gtk_builder_connect_signals (builder, NULL);
// Load widget into box
int i;
for (i=0; i<5; i++){
gtk_box_pack_start( GTK_BOX (gtk_builder_get_object (builder, "widget_vbox")),
my_widget(),
FALSE,
TRUE,
0);
if(i!=4){ // Don't add a seperator at the last loop
widget = gtk_hseparator_new();
gtk_box_pack_start( GTK_BOX (gtk_builder_get_object (builder, "solo_mission_vbox")),
widget,
FALSE,
TRUE,
0);
gtk_widget_show(widget);
}}}
这将使用小部件填充框 5 次,中间有分隔符。问题在于程序打开和关闭同一个文件 5 次只是为了将其放置到位。
如何获取构建器输出并将其“复制”到 5 个完全不同的实例中?它可能涉及很多*s 和&s 的东西。
【问题讨论】: