你能从小部件中获得父GTK窗口吗?

时间:2011-02-23 22:55:20

标签: widget window gtk

我有一个自定义小部件,它需要启动一个MessageDialog,为了让我将该消息对话框置于我的小部件所在的窗口之上,我需要访问父gtk.window。有没有办法获得父GTK窗口?感谢

3 个答案:

答案 0 :(得分:9)

GTK文档建议:

   GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
   if (gtk_widget_is_toplevel (toplevel))
     {
       /* Perform action on toplevel. */
     }

get_toplevel将返回您在里面的最顶部窗口小部件,无论它是否是窗口,因此is_toplevel检查。是的,因为上面的代码执行了“get_toplevel()”,然后立即执行“is_toplevel()”(最有可能的是,get_toplevel()应该调用其他内容),有些内容被错误命名。

答案 1 :(得分:7)

在pygtk中,您可以获得像toplevel = mywidget.get_toplevel()这样的顶层,然后直接将toplevel提供给gtk.MessageDialog()

答案 2 :(得分:2)

虽然gtk_widget_get_toplevel可行,但您也可以试试下面的代码。它应该获取给定小部件的父gtk窗口并打印它的标题。

GdkWindow *gtk_window = gtk_widget_get_parent_window(widget);
GtkWindow *parent = NULL;
gdk_window_get_user_data(gtk_window, (gpointer *)&parent);
g_print("%s\n", gtk_window_get_title(parent));

希望这有帮助,尊重