gtk #, TreeView, CellRendererSpin: кнопки прокрутки не отображаются и пользовательские CellRenderers - PullRequest
2 голосов
/ 24 марта 2012

Я пытаюсь использовать кнопку прокрутки в TreeView.Это как добавлено так:

Gtk.TreeViewColumn adjustColumn = new Gtk.TreeViewColumn();
adjustColumn.Title = "";
Gtk.CellRendererSpin adjustCell = new Gtk.CellRendererSpin();
adjustCell.Digits = 0;
adjustCell.Adjustment = new Adjustment(0, 0, 99, 1, 99, 99);
adjustCell.Editable = true;
adjustCell.Visible = true;
adjustCell.Sensitive = true;
adjustCell.Mode = CellRendererMode.Editable;
adjustColumn.PackEnd(adjustCell, true);

adjustColumn.SetCellDataFunc(adjustCell, new Gtk.TreeCellDataFunc(RenderAdjuster));
treeView.AppendColumn(adjustColumn);

И внутри функции рендеринга делается следующее:

(cell as Gtk.CellRendererSpin).Width = 30;
(cell as Gtk.CellRendererSpin).Height = 20;
(cell as Gtk.CellRendererSpin).Text = "" + (cell as Gtk.CellRendererSpin).Adjustment.Value;

Это делает рендеринг значения, но кнопки прокруткине видны!Они становятся видимыми только после того, как пользователь щелкнет значение .Это абсолютно нелепо, так как пользователь не узнает, что ячейка редактируема, кроме случайного нажатия на нее, тем более что в строке есть другие значения, которые нельзя изменить.

Итак, мой первый вопросесть, как сделать так, чтобы кнопки прокрутки всегда были видны?

Можно ли это сделать с помощью пользовательского CellRenderer?

Я был бы благодарен за пример того, как создать собственный, действительно работающий рендерер ячейки с вращающейся кнопкой.К сожалению, пользовательские средства визуализации ячеек являются недокументированной загадкой (как и почти все в gtk #;)).И все, что вы можете найти для них, это примеры, которые рисуют каирские прямоугольники и т. Д. Сами.Должен быть более простой способ, где вы можете просто поместить любой виджет в это средство визуализации, прослушивать щелчки и т. Д. И просто отображать виджет при визуализации ячейки.

Пример пользовательского CellRenderer, который просто отображаетКнопка (которая может прослушивать щелчки) также подойдет, так как я могу хотя бы «подделать» SpinButton, имея три столбца с текстом, кнопку «+» и кнопку «-».

...