我试图在C上的GtkDrawingArea上放置一个按钮(GUI是从glade文件生成的)。在Glade中,我将GtkDrawingArea和GtkButton放入GtkFixed容器中。我可以点击按钮所在的位置和按钮"点击"成功调用了事件处理程序,但该按钮隐藏在GtkDrawingArea后面。在'#34;揭露 - 事件"绘图区的处理程序我有这个:
gboolean on_drawArea_expose_event(GtkWidget *widget, GdkEventExpose *expose, gpointer data)
{
// draw on drawingArea
gdk_window_restack( button->window, widget->window, TRUE);
return FALSE;
}
我收到以下错误:
gdk_window_restack: assertion 'gdk_window_is_toplevel (GDK_WINDOW_OBJECT (sibling)' failed
我试过了:
gdk_window_raise( button->window);
除了重新包装之外,它没有任何错误,但它也没有任何错误。
有任何想法吗?
提前谢谢,
答案 0 :(得分:0)
所以我最终在DrawingArea中手动绘制了GtkButton小部件所在位置的按钮。
{
// within expose event handler
// draw desired image onto GdkPixmap
// code to draw pix map goes here
// check to see if GtkButton exists
if( button != NULL )
{
GdkGC *buttonGC = gdk_gc_new( myPixmap );
PangoLayout *buttonLayout = gtk_widget_create_pango_layout( button, "press me");
gdk_draw_layout( myPixmap, buttonGC, button->allocation.x, button->allocation.y, buttonLayout);
}
gdk_draw_drawable ( myparameters, ...);
// clean up variables
return;
}