And another TreeView problem,应该使用qt ;)
我有一个TreeView,在其中我使用以下函数来呈现文本:
private void RenderEntryValue (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
(cell as Gtk.CellRendererText).Markup = "" + someMarkupText;
(cell as Gtk.CellRendererText).Alignment = Pango.Alignment.Center;
}正如您可能从主题中猜到的那样,这是不起作用的。文本保持左对齐。除了在左边添加空格之外,你有什么办法让它工作吗?
在代码中,除了添加和处理列之外,没有其他地方会对TreeView执行任何操作。在那里的任何地方都没有设置对齐。
发布于 2012-03-25 23:43:11
虽然不是一个解决方案,但我至少找到了一个自定义CellRenderer形式的变通方法。不知何故,这并不是真正将文本放在中心,而是将一些像素放在它的左边,但这仍然比完全忽略对齐要好得多;)
public class CellRendererAlignedText : CellRendererText
{
/**
* Overridden render method to position text correctly.
* */
protected override void Render (Gdk.Drawable window,
Widget widget,
Gdk.Rectangle background_area,
Gdk.Rectangle cell_area,
Gdk.Rectangle expose_area,
CellRendererState flags)
{
if (Alignment == Pango.Alignment.Center)
{
cell_area.X += background_area.Width/4;
cell_area.Width /= 2;
}
base.Render (window, widget, background_area, cell_area, expose_area, flags);
}
}发布于 2012-07-21 02:31:34
alignment似乎只影响布局中文本的对齐方式。因为布局的宽度和它包含的文本一样宽,所以除非有多行,否则alignment什么也不做。
要使文本真正在列中居中,还需要设置xalign = 0.5f,因此:
private void RenderEntryValue (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
(cell as Gtk.CellRendererText).Markup = "" + someMarkupText;
(cell as Gtk.CellRendererText).Alignment = Pango.Alignment.Center;
cell.Xalign = 0.5f;
}https://stackoverflow.com/questions/9653583
复制相似问题