2010-12-14 38 views
1

我試圖讓廣場按鈕的表GTK#具有以下屬性:如何在GTK#創建一個包裹臺上

  1. 按鈕將被添加,每次取出一個。
  2. 按鈕應該像頁面上的文本一樣佈局 - 從左到右,直到沒有更多的元素可以放在一行上,然後包裝到下一行。
  3. 如果有更多的按鈕不適合窗口,應該有一個垂直滾動條。
  4. 該表應該可調整大小。調整大小應根據需要重新排列按鈕。
  5. 按鈕應該是固定的大小。

我開始嘗試使用Homogenous == true的表。我爲SizeAllocated添加了一個處理程序,並在其中檢查表的寬度是否已經更改,足以添加或刪除列。如果有的話,我刪除了所有的按鈕,更新了NColumns,並在正確的地方重新安裝了按鈕。這看起來很有效,但按鈕的大小並不固定 - 它們會擴大以填充橫向空間。

接下來我嘗試關閉Homogenous並設置按鈕的首選尺寸。一個小問題是,理想情況下我想在每個按鈕上放一個已知大小的位圖,並且我希望佈局正確無論該按鈕在位圖周圍添加多少個像素,但我不知道如何找出按鈕的總大小來做我的計算。更嚴重的問題是我的應用程序現在重新繪製不一致 - 有時按鈕標籤偏離中心或根本不繪製。我在想,如果這是因爲我正在改變佈局以迴應錯誤的信號。

我應該怎麼做呢?表是這個工作的正確容器嗎?有沒有什麼能做到我想要的東西? (也許更類似於文件瀏覽器中的「圖標」或「縮略圖」視圖?)根據大小的變化操作窗口布局的正確方法是什麼?

回答

1

要做這樣的事情,你需要一個自定義佈局容器。如果在GTK + 3.0中沒有新的高寬比的東西,那麼包裝盒很難(需要可怕的黑客),但是它已經完成。

這裏有一些鏈接,過去的努力,你可能會發現有用:

GIMP也已經或曾經有過一個包裹箱的widget它可能和上面的一樣,我不確定。

2

我不相信你描述的東西存在於GTK +中。儘管你可能想要編寫自己的容器小部件,但這並不難。

一個好的起點可能是this tutorial(鏈接更新)

1

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

+1

啊...看起來像GTK#維護得不好。它不止是後面的幾個版本。 : - / – Weeble 2010-12-15 08:23:50