我正在一个项目中,该项目具有顶部窗口和一个功能,该功能可以为我提供有关特定小部件的所有信息。如果我可以访问顶部窗口并且具有此功能,那么获取与此小部件相对应的树信息的最佳方法是什么?
我的方法是拥有此函数,将其命名为getwinfo(),并且将顶部窗口称为window。如果窗口不是容器,则意味着它没有子级,因此我将使用getwinfo()返回相应的数组,该数组返回该小部件的属性。如果窗口是容器,则我递归地遍历该窗口以获取该小部件的树结构。
static void getwinfo(window){
//stores widget properties into jsonarray}
static void GTKTree(window){
if (!GTK_CONTAINER(window)){
getwinfo(window);
}
GList *children = gtk_container_get_children(GTK_CONTAINER(window));
GList *l;
for (l = children; l != NULL; l = l->next)
{
children GetGTKTree((GtkWidget *)l->data);
}
}
这将返回一个平面数组,但是我想要返回的窗口的树结构。这是我第一次使用GTK库,因此,我非常感谢您提供一些有关如何完成此操作的帮助。