我有一个带滚动窗口内的drawarea的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);
添加中间层框的原因是我需要在滚动窗口中添加多个绘图区域。如果添加一个框不适合使用滚动窗口和绘图区域,你会建议做什么?
答案 0 :(得分:0)
取决于您使用的是什么版本的gtk,但是自从Gtk-3.8起,gtk_scrolled_window_add_with_viewport()已被弃用。 尝试使用双gtk_container_add(),它创建一个GtkViewport实例并将其添加到scrwin。