我猜您可以使用treeview的setItemDelegate方法为您的treeview项目设置自定义绘画工具。 在委托的paint方法中,可以使用QTextDocument将项目的文本加载为html并呈现。 请检查以下示例是否适合您:

树视图初始化:

...

// create simple model for a tree view

QStandardItemModel *model = new QStandardItemModel();

QModelIndex parentItem;

for (int i = 0; i < 4; ++i)

{

parentItem = model->index(0, 0, parentItem);

model->insertRows(0, 1, parentItem);

model->insertColumns(0, 1, parentItem);

QModelIndex index = model->index(0, 0, parentItem);

model->setData(index, "blah-blah some text other blah");

}

// create custom delegate

HTMLDelegate* delegate = new HTMLDelegate();

// set model and delegate to the treeview object

ui->treeView->setModel(model);

ui->treeView->setItemDelegate(delegate);

...

自定义委托实现

class HTMLDelegate : public QStyledItemDelegate

{

protected:

void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const;

QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const;

};

void HTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const

{

QStyleOptionViewItemV4 options = option;

initStyleOption(&options, index);

painter->save();

QTextDocument doc;

doc.setHtml(options.text);

options.text = "";

options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);

painter->translate(options.rect.left(), options.rect.top());

QRect clip(0, 0, options.rect.width(), options.rect.height());

doc.drawContents(painter, clip);

painter->restore();

}

QSize HTMLDelegate::sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const

{

QStyleOptionViewItemV4 options = option;

initStyleOption(&options, index);

QTextDocument doc;

doc.setHtml(options.text);

doc.setTextWidth(options.rect.width());

return QSize(doc.idealWidth(), doc.size().height());

}

希望这会有所帮助,问候

update0:更改HTMLDelegate以使图标可见,并且所选项目的笔颜色不同

void HTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const

{

QStyleOptionViewItemV4 options = option;

initStyleOption(&options, index);

painter->save();

QTextDocument doc;

doc.setHtml(options.text);

options.text = "";

options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);

// shift text right to make icon visible

QSize iconSize = options.icon.actualSize(options.rect.size());

painter->translate(options.rect.left()+iconSize.width(), options.rect.top());

QRect clip(0, 0, options.rect.width()+iconSize.width(), options.rect.height());

//doc.drawContents(painter, clip);

painter->setClipRect(clip);

QAbstractTextDocumentLayout::PaintContext ctx;

// set text color to red for selected item

if (option.state & QStyle::State_Selected)

ctx.palette.setColor(QPalette::Text, QColor("red"));

ctx.clip = clip;

doc.documentLayout()->draw(painter, ctx);

painter->restore();

}

html怎么渲染富文本,渲染-如何使项目视图在Q中渲染富文本(html)相关推荐

  1. vue 渲染函数处理slot_解决vue同一slot在组件中渲染多次的问题

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. java 图像渲染_对具有大量图像的视图执行本机渲染性能

    您可以通过不同方式改善您的表现 . 首先,您可以使用https://github.com/kfiroo/react-native-cached-image缓存的图像(如果图像网址有参数,请不要忘记添加 ...

  3. python文本数据处理_从 App 描述介绍文字中发掘 Python 文本数据预处理实例

    本文为 AI 研习社编译的技术博客,原标题 What App Descriptions Tell Us: Text Data Preprocessing in Python,作者为 Finn Qiao ...

  4. excel 中的文本是ansi还是unicode_详细讲解Excel中常用的文本函数

    Excel工作界面中组成元素的特殊操作 大家好!最近分享了很多Excel的函数,有数学函数.日期函数.统计函数.逻辑函数等.今天要讲解的是文本函数,它是一个非常重要函数家族,下面就为大家介绍一些常用的 ...

  5. 怎么把文本框弄一样大小_在VB中如何让文本框大小与窗体大小一样大

    展开全部 1.首先我们打开vb6.0软件进入到标准"工程1"界面,这些32313133353236313431303231363533e78988e69d8331333433626 ...

  6. html文本框内字体颜色怎么改,dreamweaver中怎么样修改文本域中的字体颜色

    重载对话框的WM_CTLCOLOR对应的虚函数 下面的代码是一个个更改 如果你想把同类的控件改变颜色 可以用 if(nCtlColor==CTLCOLOR_STATIC) HBRUSH CSetPai ...

  7. 微信小程序中嵌套html_在微信小程序中渲染HTML内容3种解决方案及分析与问题解决...

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 在微信小程序中渲 ...

  8. 微信小程序解析渲染Web App中的富文本内容

    前提:微信小程序里面没有DOM对象,不能直接操作DOM. 问题:在日常的web前端开发中,必然会接触到富文本编辑器,如何在小程序里展示渲染富文本编辑器中的HTML元素呢? 测试内容:wangEdito ...

  9. 【wangEditor富文本编辑器】富文本三种使用方法,html使用富文本,html套vue脚手架使用富文本,vue使用富文本【简单易用,复制即用】

    前言 富文本编辑器功能是很多人都要使用的 市面上有很多的编辑器可以供选择,但是很多编辑器会有点复杂,或者文档看起来难受. 我最近做了一个需求,是需要在html文件上写富文本编辑器. 但是我看了以前用的 ...

最新文章

  1. [case20]聊聊rest api设计
  2. C#为什么多线程控制winform需要用委托?
  3. DCOM 示例:演示如何远程调用 COM 对象
  4. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集...
  5. android udp和tcp区别,UDP模式与TCP模式的区别
  6. 新瓶装旧酒,贴着区块链标签的QunQun社交平台真能讲个好故事?
  7. 关闭输入流后,依然无法删除文件
  8. Lego-美团接口自动化测试实践
  9. 服务器系统重置,云服务器系统重置
  10. think in java bruce eckel_java大师 Bruce Eckel 批评java
  11. java cron在线_在线cron生成器
  12. 华为快应用 阻止事件冒泡
  13. 【SPEA飞针测试】4085飞针测试机简述
  14. 性能测试 查看Android APP 帧数FPS的方法(转)
  15. 哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?
  16. 圆周率用计算机能算出来不,圆周率到底能不能算尽?人类拿超级计算机算了,结果不敢相信!...
  17. 台式计算机内存是什么意思,内存频率是什么意思 电脑内存的工作频率是什么...
  18. springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程
  19. linux sh怎么安装,Linux Powershell 安装教程
  20. 1.基于S5PV210的图片解码播放器(详解)

热门文章

  1. python的HTTP请求方式(socket)
  2. 【mysql创建数据库以及表添加内容】
  3. 允许计算机关闭此设备 蓝牙,大师为你解决win7系统配置蓝牙时“允许Bluetooth设备连接到此计算机”选项灰色的修复步骤...
  4. 77. 查看线程的运行状态
  5. 字号和字体镑数,pt,px
  6. ArcGIS教程:什么是影像分类?
  7. html5场景动画效果图,HTML5+CSS3城市场景动画
  8. Java使用正则表达式判断是否包含中文、英文、数字、自定义符号
  9. 编程推荐丨4款功能强大的文本编辑软件, 程序员代码编程就象开了挂!
  10. Unity给按钮设置图标