如何使用gtkmm在TreeView中使单个项目加粗
How to make a single item bold in TreeView using gtkmm?
在做append_column
时可以提供一个CellRenderer
(Gtk::CellRendererText
),在其中可以使用property_weight
来设置权重。
但是,这会改变整个列,我的目标是能够将单个项目加粗。是否有一个内置的方法来做这件事?
要求是能够随时将一个项目从常规文本更改为粗体。
所以如果我有:
Gtk::TreeModel::Row row = *(treeModel->append());
row[treeColumns.id] = 1;
row[treeColumns.name] = "[one]";
Gtk::TreeModel::Row childrow = *(treeModel->append(row.children()));
childrow[treeColumns.id] = 11;
childrow[treeColumns.name] = "<b>eleven</b>";
childrow = *(treeModel->append(row.children()));
childrow[treeColumns.id] = 12;
childrow[treeColumns.name] = "twelve";
row = *(treeModel->append());
row[treeColumns.id] = 2;
row[treeColumns.name] = "two";
//Add the TreeView's view columns:
treeView->append_column("Name", treeColumns.name);
// treeView->append_column("ID", treeColumns.id);
treeView->expand_all();
然后我想元素号11变成粗体(它目前有HTML标签只突出这一点),我怎么能做到这一点?
如果你指定你自己的CellRenderer,那么你可能也想指定你自己的cell_data_func,通过set_cell_data_func():https://developer.gnome.org/gtkmm/stable/classGtk_1_1TreeViewColumn.html a765296845c9e9757ba405becbbc13d96
在那个回调中你可以改变单元格的属性。它看起来像这样:
MyTreeView::MyTreeView()
{
...
Gtk::TreeViewColumn view_column = Gtk::manage(new Gtk::TreeViewColumn(_("Name")));
Gtk::CellRendererText cell = Gtk::manage(new Gtk::CellRendererText());
view_column->pack_start(*cell, false);
view_column->set_cell_data_func(*cell, sigc::mem_fun(*this, &MyTreeView::on_cell_data_name));
append_column(view_column);
...
}
void MyTreeView::on_cell_data_name(
Gtk::CellRenderer* renderer,
const Gtk::TreeModel::iterator& iter)
{
//Get the value from the model and show it appropriately in the view:
Gtk::TreeModel::Row row = *iter;
int id = row[m_columns.m_col_id];
Glib::ustring name = row[m_columns.m_col_name];
if (id == SOME_MAGIC_NUMBER)
name = "<b>" + name + "</b>";
Gtk::CellRendererText* text_renderer = dynamic_cast<Gtk::CellRendererText*>(renderer);
if(text_renderer)
text_renderer.property_markup() = name;
}
}
比起使用标记,您可能更喜欢使用单元格渲染器的font属性。
相关文章:
- Eclipse CDT:单个项目中有多个C++文件
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 如何使用 CMake 获得包含所有项目的 VS 解决方案和单个项目的解决方案
- 如何在QT中为两个项目使用单个UI
- C++:读入文件并显示单个项目
- 指向单个项目或数组的指针
- 如何从unordered_set获取单个项目
- 无法在 Netbeans 中编译单个C++文件,但能够生成完整的项目
- 在 netbeans 中编译项目中的单个文件
- 如何在单个自定义操作项目中创建多个C 自定义操作
- 在 Visual Studio 中为单个解决方案编译和使用多个项目
- 如何在单个 Visual Studio 2010 项目中执行多个主文件
- 从C++双链接列表中删除单个项目
- 如何在 Eclipse 中将我的项目从多个编译单元转换为单个编译单元
- 如何在大型项目中预处理具有多个 #include 文件的单个源文件
- 2个项目可以在MS VS 2008中创建单个DLL
- 代码块,单个项目,许多可执行文件
- 从QStringListModel作为模型的QListview中删除单个项目
- 如何使用gtkmm在TreeView中使单个项目加粗