我无法让 GTK3 中的 TreeView 正确换行文本。
我将其设置为以这种方式包装:
Gtk::TreeViewColumn* pColumn = mTreeView.get_column(2);
static_cast<Gtk::CellRendererText *>(pColumn->get_first_cell())
->property_wrap_mode().set_value(Pango::WRAP_WORD_CHAR);
static_cast<Gtk::CellRendererText *>(pColumn->get_first_cell())
->property_wrap_width().set_value(200);
这行得通,文本被换行,但是当我调整窗口大小并使其更大时,单元格上方和下方有很多丑陋的空白,带有长文本。看来,GTK 根据换行宽度为单元格保留高度。这对我来说毫无意义。
我试图通过计算所需的宽度来解决 signal_check_resize 中所需的设置,如下所示:
Gtk::TreeViewColumn* pColumn = mTreeView.get_column(2);
auto width = this->get_allocated_width()
- mTreeView.get_column(0)->get_width()
- mTreeView.get_column(1)->get_width();
static_cast<Gtk::CellRendererText *>(pColumn->get_first_cell())
->property_wrap_width().set_value(width-100);
this->forceRecreateModel = true; //Needed to work
但这让我只能让窗口更大。调整大小后无法缩小。
问题是,这是如何正确完成的?
我在 Arch linux 上使用 gtk3.20.3-1 和 gtkmm3.20.1-1。
编辑:修复了标题中的错字...