用户界面-为什么不能将gtkdrawarea放入gtkscrollledwindow中的gtkbox中



我有一个GTK程序,在滚动窗口内有一个绘制区域。它工作得很好,直到我在它们之间重新构造了一个中间层gtkbox。当绘制区域现在被添加到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_scrolled_window_add_with_viewport()已被弃用。尝试使用double gtk_container_add(),这是创建GtkViewport的实例并将其添加到scrwin。

相关内容

  • 没有找到相关文章

最新更新