尝试获取 GtkEventBox 的高度和宽度。
试过以下事情。
GtkRequisition requisition;
gtk_widget_get_child_requisition(widget, &requisition);
// Getting requisition.height 0
----------------------------------------------------------
widget->allocation-x //getting 0
widget->allocation-height //getting -1
----------------------------------------------------------
gtk_widget_get_size_request( widget, &height, &width); // Again getting 0
--------------------------------------------------------------------------
Gtk 没有提供简单的函数来为您提供小部件的实际显示高度和宽度,这真的很糟糕。
有人试过使用 GtkWidget 获取高度吗?
最佳答案
一旦你的小部件被实现(根据它的父容器可以给它的大小而定)你应该能够通过 widget->allocation.width
和 widget 获得这些值->allocation.height
.
gtk 执行此操作的方式没有任何问题。小部件想要的大小与它实际获得的大小之间存在差异。所以读取这些值的时机很重要。对这些变量使用“获取”方法不会改变它们尚未初始化的事实。
人们解决这个问题的通常方法是利用 size-allocate
信号,该信号在小部件获得新的实际大小时发出。像这样:
void my_getsize(GtkWidget *widget, GtkAllocation *allocation, void *data) {
printf("width = %d, height = %d\n", allocation->width, allocation->height);
}
然后在主循环中的某处,连接信号:
g_signal_connect(mywidget, "size-allocate", G_CALLBACK(my_getsize), NULL);
关于c - 完全受够了获取 Gtk 小部件的高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2675514/