如果要在QTableView的单元格支持Html,通常做法是使用QTextDocument绘制,由于带有标签的Html文本总是长于实际显示的文本,所以无法直接使用QFontMetrics::elidedText。如果对纯文本进行缩略,又不好判断对应Html是哪部分被替换了。
实际上QTextDocument支持文本编辑,Html文本会被转化为Qt的格式,因此,使用坐标去测试文本是否超出显示区域再进行替换,可实现不同的缩略模式。
目前仅简单实现了单行文本的缩略,如果要实现多行文本的或者带有图片等元素,就比较麻烦,这里不做讨论。
QTextDocument::documentLayout接口可以获取到文档的布局,QAbstractTextDocumentLayout提供了hitTest接口测试指定坐标的文档位置:
virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy);
其中第二个参数是指精确模式,经过测试:
QTextDocument使用QTextCursor进行编辑,QTextCursor提供了非常多的编辑操作。这里主要用来选择需要省略的文本并替换为“…”。
以下是三种不同的省略模式的表现。
QTextDocument不支持直接交互,所以如果要实现类似点击链接跳转的行为,就需要通过接口获取链接。
QTextDocument设置文本后就已经跟根据文本创建了所有格式,如果要替换一些默认样式,比如超链接,就需要查找链接进行调整了。
加上缩略模式的交互,就需要根据缩略后的内容判断,有时间再考虑怎么做吧。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务