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

我有一个网格,它继承了我的自定义模型集的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.

点赞