【问题标题】:How to create a wrapping table in GTK#如何在 GTK 中创建包装表#
【发布时间】:2011-05-25 09:00:59
【问题描述】:

我正在尝试在 GTK# 中使用以下属性制作方形按钮表:

  1. 将一次添加和删除一个按钮。
  2. 按钮的布局应该像页面上的文本一样 - 从左到右,直到一行中没有更多按钮,然后换行到下一行。
  3. 如果按钮的数量超出了窗口的大小,则应该有一个垂直滚动条。
  4. 表格应该可以调整大小。调整大小应根据需要重排按钮。
  5. 按钮的大小应该是固定的。

我开始尝试使用具有 Homogenous==true 的表。我为 SizeAllocated 添加了一个处理程序,并在其中检查表的宽度是否已更改到足以添加或删除一列。如果有,我删除了所有按钮,更新了 NColumns 并将按钮重新附加到正确的位置。这似乎可行,但按钮的大小不是固定的 - 它们会扩展以填充水平空间。

接下来我尝试关闭同质化并设置按钮的首选尺寸。一个小问题是,理想情况下,我想在每个按钮上放置一个已知大小的位图,并且无论按钮在位图周围添加多少像素,我都希望布局正确,但我不确定如何找出按钮的总大小来做我的计算。一个更严重的问题是我的应用程序现在重绘不一致 - 有时按钮标签偏离中心或根本没有绘制。我想知道这是否是因为我正在更改布局以响应错误的信号。

我应该怎么做呢? Table 是适合这项工作的容器吗?有什么东西可以做我想要的开箱即用吗? (也许更类似于文件浏览器中的“图标”或“缩略图”视图?)根据大小变化操作窗口布局的正确方法是什么?

【问题讨论】:

    标签: gtk gtk#


    【解决方案1】:

    GtkWidget flowbox = new Gtk.FlowBox 将创建一个新表,该表会自动调整行以匹配尽可能多的空间大小。但是,它通常用于选择小部件,因此将概述您添加到其中的所有小部件。要禁用此功能,您需要调用 flowbox.SelectionMode(NONE).

    【讨论】:

      【解决方案2】:

      您正在寻找的是 gtk_flowbox。它的文档是here

      【讨论】:

        【解决方案3】:

        我不相信您所描述的内容存在于 GTK+ 中。不过,您可能想考虑编写自己的容器小部件,这并不难。

        一个好的起点可能是this tutorial(链接已更新)

        【讨论】:

          【解决方案4】:

          要执行此类操作,您需要一个自定义布局容器。如果没有 GTK+ 3.0 中新的高宽比的东西,包装盒很困难(需要可怕的 hack),但它已经完成了。

          以下是一些您可能会发现有用的过去努力的链接:

          GIMP 中也有或曾经有一个包装盒小部件,可能与上述之一相同,我不确定。

          【讨论】:

            【解决方案5】:

            您可以使用 GTK 2.20 及更高版本中提供的GtkToolPalette

            【讨论】:

            • 啊...看起来 GTK# 维护得不好。后面不止几个版本。 :-/
            猜你喜欢
            • 2011-03-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-19
            • 1970-01-01
            • 1970-01-01
            • 2014-02-01
            • 1970-01-01
            相关资源
            最近更新 更多