我在gschem工作,这是一个编辑电子原理图的免费软件工具。最近,我们在使用包含GtkTextView的GtkScrolledWindow时遇到了问题。
上下文
最近版本的Ubuntu使用了覆盖滚动条,这意味着GtkScrolledWindows不再设置最小高度来为传统滚动条提供足够的空间(实际上,它们的最小高度为0)。同样,没有要显示的文本的GtkTextView请求高度为0。这意味着gschem中的一个可滚动GtkTextViews一直显示为一个像素的高度,这显然是不可用的。

在上面显示的屏幕截图右侧的对话框中,注意"Value:“标签和"Add”按钮之间的不可见小部件。
几个用户已经独立地报告了这一点--另请参阅bug report。
问题
显然,我们可以通过执行以下操作来解决此问题:
g_object_set (textview, "height-request", 100, NULL);然而,这是相当不优雅的,并将打破以像素设置非常大的字体大小的用户(例如,有视力问题的用户或使用高DPI屏幕的用户)。
因此,理想情况下,我们希望设置GtkTextView相对于默认字体大小的最小大小,例如,告诉它“至少显示三行文本”。
有没有人能建议一种明智/优雅的方法来做到这一点呢?
发布于 2011-12-20 05:20:15
只需通过执行以下操作来禁用应用程序中的ubuntu覆盖滚动条:
putenv("LIBOVERLAY_SCROLLBAR=0");不是很理想,但在你找到更持久的解决方案之前,这是一个很好的选择。或者只需等待Ubuntu禁用覆盖滚动条...
发布于 2011-12-22 18:08:55
我会添加代码来挖掘当前/默认样式信息,使用这些信息来计算字体基线高度,然后根据这些信息计算一些粗略的大小分配,大约在您提到的三行左右。
发布于 2012-02-11 23:23:48
它必须是一个文本视图吗?如果可以使用eventbox,那么可以从它创建一个cairo图面,使用pango呈现文本,然后使用pango_layout_get_size()获取文本高度。
https://stackoverflow.com/questions/8482505
复制相似问题