html怎么渲染富文本,渲染-如何使项目视图在Q中渲染富文本(html)
我猜您可以使用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)相关推荐
- vue 渲染函数处理slot_解决vue同一slot在组件中渲染多次的问题
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- java 图像渲染_对具有大量图像的视图执行本机渲染性能
您可以通过不同方式改善您的表现 . 首先,您可以使用https://github.com/kfiroo/react-native-cached-image缓存的图像(如果图像网址有参数,请不要忘记添加 ...
- python文本数据处理_从 App 描述介绍文字中发掘 Python 文本数据预处理实例
本文为 AI 研习社编译的技术博客,原标题 What App Descriptions Tell Us: Text Data Preprocessing in Python,作者为 Finn Qiao ...
- excel 中的文本是ansi还是unicode_详细讲解Excel中常用的文本函数
Excel工作界面中组成元素的特殊操作 大家好!最近分享了很多Excel的函数,有数学函数.日期函数.统计函数.逻辑函数等.今天要讲解的是文本函数,它是一个非常重要函数家族,下面就为大家介绍一些常用的 ...
- 怎么把文本框弄一样大小_在VB中如何让文本框大小与窗体大小一样大
展开全部 1.首先我们打开vb6.0软件进入到标准"工程1"界面,这些32313133353236313431303231363533e78988e69d8331333433626 ...
- html文本框内字体颜色怎么改,dreamweaver中怎么样修改文本域中的字体颜色
重载对话框的WM_CTLCOLOR对应的虚函数 下面的代码是一个个更改 如果你想把同类的控件改变颜色 可以用 if(nCtlColor==CTLCOLOR_STATIC) HBRUSH CSetPai ...
- 微信小程序中嵌套html_在微信小程序中渲染HTML内容3种解决方案及分析与问题解决...
大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 在微信小程序中渲 ...
- 微信小程序解析渲染Web App中的富文本内容
前提:微信小程序里面没有DOM对象,不能直接操作DOM. 问题:在日常的web前端开发中,必然会接触到富文本编辑器,如何在小程序里展示渲染富文本编辑器中的HTML元素呢? 测试内容:wangEdito ...
- 【wangEditor富文本编辑器】富文本三种使用方法,html使用富文本,html套vue脚手架使用富文本,vue使用富文本【简单易用,复制即用】
前言 富文本编辑器功能是很多人都要使用的 市面上有很多的编辑器可以供选择,但是很多编辑器会有点复杂,或者文档看起来难受. 我最近做了一个需求,是需要在html文件上写富文本编辑器. 但是我看了以前用的 ...
最新文章
- [case20]聊聊rest api设计
- C#为什么多线程控制winform需要用委托?
- DCOM 示例:演示如何远程调用 COM 对象
- ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集...
- android udp和tcp区别,UDP模式与TCP模式的区别
- 新瓶装旧酒,贴着区块链标签的QunQun社交平台真能讲个好故事?
- 关闭输入流后,依然无法删除文件
- Lego-美团接口自动化测试实践
- 服务器系统重置,云服务器系统重置
- think in java bruce eckel_java大师 Bruce Eckel 批评java
- java cron在线_在线cron生成器
- 华为快应用 阻止事件冒泡
- 【SPEA飞针测试】4085飞针测试机简述
- 性能测试 查看Android APP 帧数FPS的方法(转)
- 哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?
- 圆周率用计算机能算出来不,圆周率到底能不能算尽?人类拿超级计算机算了,结果不敢相信!...
- 台式计算机内存是什么意思,内存频率是什么意思 电脑内存的工作频率是什么...
- springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程
- linux sh怎么安装,Linux Powershell 安装教程
- 1.基于S5PV210的图片解码播放器(详解)
热门文章
- python的HTTP请求方式(socket)
- 【mysql创建数据库以及表添加内容】
- 允许计算机关闭此设备 蓝牙,大师为你解决win7系统配置蓝牙时“允许Bluetooth设备连接到此计算机”选项灰色的修复步骤...
- 77. 查看线程的运行状态
- 字号和字体镑数,pt,px
- ArcGIS教程:什么是影像分类?
- html5场景动画效果图,HTML5+CSS3城市场景动画
- Java使用正则表达式判断是否包含中文、英文、数字、自定义符号
- 编程推荐丨4款功能强大的文本编辑软件, 程序员代码编程就象开了挂!
- Unity给按钮设置图标