加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在QTableView的默认视图中显示超文本?

发布时间:2020-12-16 07:25:13 所属栏目:百科 来源:网络整理
导读:我有一个网格,它继承了我的自定义模型集的QTableView视图.我还创建了用于编辑表格单元格中的项目的委托.他们都工作得很好(至少按照我的要求). 但我的问题是,当用户在单元格内部单击时,如果该项目的委托是让我们说QTextEdit(可以处理richtext),并且用户在text
我有一个网格,它继承了我的自定义模型集的QTableView视图.我还创建了用于编辑表格单元格中的项目的委托.他们都工作得很好(至少按照我的要求).

但我的问题是,当用户在单元格内部单击时,如果该项目的委托是让我们说QTextEdit(可以处理richtext),并且用户在texteditbox中粘贴一些文本(从带有文本的样式信息的MSWORD复制).此时它只显示正确的文本(表示粗体,斜体,字体大小等),但只要委托在那里,但在将数据设置为模型并更新视图后,默认视图不会显示样式信息.它显示了纯HTML文本(如果我在调用委托的插槽dataChanged并从委托中获取html时设置模型数据).

我希望tableview的默认视图处理HTML并根据其样式显示文本.

任何人都知道如何处理?提前致谢!
我正在使用QT版本4.1.4(我知道它的旧版本,但它的项目需求)

解决方法

默认情况下,显示的编辑器与该特定列的类型相关联(例如int,double,QDateTime).该编辑器由分配给视图的代理控制.特别是,看看它的 createEditor()和 setEditorData()功能.

您的模型可能正在使用QString类型并将该字符串传递给QTextEdit,QTextEdit会自动检查它以查看它是否包含HTML文本,并且由于它确实存在,它会将其显示为HTML.但是,标准代表不检查文本.

如果要在未处于编辑模式时更改视图,则需要能够显示富文本的委托. Here’s another stack overflow answer that gives details on the delegate.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读