2016-01-12 12 views
1

Я создал виджет, который по сути является значком. Этот виджет значка имеет запрос ширины/высоты 150 пикселей. Я хочу поместить эти значки (программно) в виде таблицы, как показано ниже:Gtk: Как предотвратить расширение виджета за пределы запроса ширины/высоты внутри таблицы.

Desired alignment and sizing of cells in the table view

Вместо того, что я получаю это:

The resulting output

Как я могу заставить таблицу не расширять каждый виджет значка? Мой код для создания иконок виджетов и добавить их в таблицу следующим образом:

iconTable.Add (new MatchDayManager.SceneIconCellWidget (new MDMScene ("A Final Scene Name"))); 
    iconTable.NRows = noOfRows; 
    iconTable.SetSizeRequest (-1, cellHeight * noOfRows); 
    iconTable.CheckResize(); 
    ShowAll(); 
+0

Если вы имеете в виду GtkTable, который устарел и, как я видел из подобных вопросов есть проблемы. Если вы имеете в виду GtkTreeView, GtkTreeView основан на строке. Вместо этого вы хотите использовать GtkIconView или GtkFlowBox. – andlabs

+0

К сожалению, я должен использовать GtkTable, иначе я бы определенно использовал GtkIconView. –

ответ

1

Фигурного это - я использовал функцию iconTable.Add(...), когда на самом деле, вы должны использовать функцию iconTable.Attach(...).

С последним вы можете указать ячейку, в которой элемент должен использоваться с параметрами leftAttach, rightAttach, topAttach and bottomAttach. Подумайте об этом как о индексе ячейки, в котором описывается, какая ячейка помещает виджет из и в.

Если бы я хотел, чтобы виджет появлялся в правом нижнем углу сетки 2x2, I использовал бы 1,2,1,2.

... это означает, что виджет будет проходить между строками 1 и 2 и между столбцами 1 и 2. Это делается так, чтобы вы могли позволить виджетам охватывать несколько ячеек, например. с помощью 1, 4, 1, 2.

Моего кода тогда следующим образом:

iconTable.Attach(new Gtk.Widget ... , 0, 1, 0, 1);