User interface 为什么gtkdrawarea不能放入GTKScrolledwindowo内的gtkbox中?

User interface 为什么gtkdrawarea不能放入GTKScrolledwindowo内的gtkbox中?,user-interface,gtk,User Interface,Gtk,我有一个gtk程序,在滚动窗口中有一个绘图区域。它工作(绘制)很好,直到我用中间层gtkbox对它进行了重组。现在将drawarea添加到gtkbox,然后将该框添加到滚动窗口的视口中时,它不会在滚动窗口中显示任何内容,如以下代码所示 GtkWidget *scrwin = gtk_scrolled_window_new (NULL,NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrwin),

我有一个gtk程序,在滚动窗口中有一个绘图区域。它工作(绘制)很好,直到我用中间层gtkbox对它进行了重组。现在将drawarea添加到gtkbox,然后将该框添加到滚动窗口的视口中时,它不会在滚动窗口中显示任何内容,如以下代码所示

GtkWidget *scrwin = gtk_scrolled_window_new (NULL,NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrwin),
                GTK_POLICY_ALWAYS,
                GTK_POLICY_AUTOMATIC  );
.  .  .
mvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL,0);
gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW(scrwin), mvbox);
.  .  . 
GtkWidget* darea = gtk_drawing_area_new ();
g_signal_connect (  G_OBJECT(darea), "draw",G_CALLBACK(draw_cb), data);
gtk_widget_set_size_request (darea, win_width, win_height);
gtk_widget_show (darea);
gtk_box_pack_start (GTK_BOX(swincr->mvbox), darea, FALSE, FALSE, 0);

添加中间层框的原因是我需要在滚动窗口中添加多个绘图区域。如果添加框不适用于滚动窗口和绘图区域,您建议怎么做?

取决于您使用的gtk版本,但由于gtk-3.8,gtk_滚动窗口_添加_和_视口()已被弃用。
尝试使用双gtk_container_add(),即创建一个GtkViewport实例并将其添加到scrwin。

并且有一个
gtk_widget_show(mvbox)
某处?为什么不使用
gtk_widget_show_all(srcwin)
而不是喷洒
gtk_widget_show(foo)
到处都是?
gtk_widget_show(darea)添加用于调试目的。