GTK中是否有任何全局顶级窗口指针?
我知道在wxWidgets中,有。我们可以通过以下方式获得它们:
import wx
wx.GetTopLevelWindows()
GTK中是否有与wxWidgets类似的方法?
答案 0 :(得分:3)
liberforce的建议很好:保持您的低级组件模块化。
但是,如果您真的想以与wxWidgets相同的方式执行此操作,请使用gtk_window_list_toplevels()
。
答案 1 :(得分:2)
最相似的是在toplever标识符上使用gtk_builder_get_object。否则,如果您手动创建指针而不是使用GtkBuilder,只需将指针指向窗口。我更喜欢这样,因为这种“我的低级组件可以依赖于对它上面的实现的调用”,这通常会导致代码中丑陋的意大利面条代码和循环依赖。
所以我通常只在main()中声明堆栈上的结构,因此结构将存在于整个应用程序生命周期中,并在回调的gpointer user_data参数中传递指向此结构的指针。在该结构中,我可以存储我的小部件或其他数据。