在按钮小部件下调整GtkMenu时出现问题
我使用以下代码添加了GtkMenu:在按钮小部件下调整GtkMenu时出现问题,gtk,Gtk,我使用以下代码添加了GtkMenu: // Add popup menu. gtk_menu_popup( GTK_MENU (widget), NULL, NULL, set_position, NULL, bevent->button, bevent->time); 为了调整我按钮下的GTK菜单,我使用了以下功能: void set_position (GtkMenu *menu, gint *px, gint
// Add popup menu.
gtk_menu_popup( GTK_MENU (widget), NULL, NULL, set_position, NULL,
bevent->button, bevent->time);
为了调整我按钮下的GTK菜单,我使用了以下功能:void set_position (GtkMenu *menu, gint *px, gint *py, gboolean *push_in, gpointer data)
{
gint w, h;
GtkBuilder *builder = GetBuilderPointer();
GtkWidget *button = GTK_WIDGET( gtk_builder_get_object( builder, "button_presence"));
gdk_window_get_size (button->window, &w, &h);
gdk_window_get_origin (button->window, px, py);
*py = h;
printf("\n\n w[%d] h[%d] px[%d] py[%d]\n\n", w, h, *px, *py );
*push_in = TRUE;
}
但是弹出窗口显示在整个窗口的末尾,而不是按钮的末尾…
打印输出f:
w[350]h[400]px[341]py[607]
为什么没有正确给出按钮的x、y和高度、宽度,有什么问题吗?
注意:本文中使用的按钮小部件是一个自定义复合小部件,其中包含(GtkHBox+(GtkImage+GtkLabel))。
我用普通标签按钮尝试了相同的代码,但仍然显示GtkMenu 在根窗口下而不是按钮下 为什么会发生这种情况。。。我被困在这个…
thnaks,
好的,让我来回答这个问题。。。。如果任何人面临相同的问题,他/她可以参考此
要在GTK按钮(自定义复合按钮)下调整GTK菜单。。使用以下设置位置回调函数
static void
pos_func( GtkMenu *menu,
gint *x,
gint *y,
gboolean *push,
GtkWidget *widget )
{
GtkRequisition req;
gtk_widget_size_request( widget, &req );
gdk_window_get_origin( gtk_widget_get_window( widget ), x, y );
*x += widget->allocation.x;
*y += widget->allocation.y + req.height;
*push = TRUE;
}
这将在GTK按钮小部件下设置GTK菜单的位置