如何在GTK中创建包装表#

时间:2010-12-14 15:57:09

标签: gtk gtk#

我正在尝试使用以下属性在GTK#中创建一个方形按钮表:

  1. 将一次添加和删除一个按钮。
  2. 按钮的布局应与页面上的文字一样 - 从左到右,直到不再适合行,然后换行到下一行。
  3. 如果窗口中有多个按钮,则应该有一个垂直滚动条。
  4. 该表应该可以调整大小。调整大小应根据需要重新调整按钮。
  5. 按钮应该是固定大小。
  6. 我开始尝试使用Homogenous == true的表。我为SizeAllocated添加了一个处理程序,在其中我检查表的宽度是否已经改变到足以添加或删除列。如果有,我删除了所有按钮,更新了NColumns并将按钮重新连接到正确的位置。这似乎有效,但按钮不是固定大小 - 它们会扩展以填充水平空间。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

要做这样的事情,你需要一个自定义的布局容器。如果没有GTK + 3.0中新的高度宽度的东西,包装盒很难(需要可怕的黑客),但它已经完成。

以下是您可能会觉得有用的过去工作的一些链接:

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