gpt4 book ai didi

c++ - 如何在QTableView 的默认 View 中显示超文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:07 25 4
gpt4 key购买 nike

我有一个继承 QTableView 的网格,我的自定义模型设置为 View 。我还创建了用于编辑表格单元格中项目的委托(delegate)。它们都工作正常(至少按照我的要求)。

但我的问题是,当用户在单元格内单击时,如果该项目的代表是 QTextEdit(它可以处理富文本)并且用户粘贴一些文本(从带有文本样式信息的 MSWORD 复制而来)在文本编辑框中。此时只要委托(delegate)存在,它就会正确显示文本(表示粗体、斜体、字体大小等),但在将数据设置为模型并更新 View 后,默认 View 不显示样式信息。它显示纯 HTML 文本(如果我在调用委托(delegate)的插槽 dataChanged 时设置模型数据并且我从委托(delegate)获取 html)。

我希望 tableview 的默认 View 能够处理 HTML 并根据其样式显示文本。

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

最佳答案

默认情况下,显示的编辑器与特定列的类型相关联(例如 int、double、QDateTime)。该编辑器由分配给 View 的委托(delegate)控制。特别是,看看它的 createEditor()setEditorData()功能。

您的模型可能正在使用 QString 类型并将该字符串传递给 QTextEdit,QTextEdit 会自动检查它是否包含 HTML 文本,如果包含,则将其显示为 HTML。但是,标准委托(delegate)不检查文本。

如果您想在不处于编辑模式时更改 View ,您需要一个能够显示富文本的委托(delegate)。 Here's another stack overflow answer that gives details on the delegate .

关于c++ - 如何在QTableView 的默认 View 中显示超文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5800466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com