c++ - 如何实现QTextDocument序列化

标签 c++ qt qtextedit

这个问题我之前问过,刚刚得到的答案是有一个开放的错误。但这是一个真正需要的功能,我想,每个编写或多或少严肃应用程序的 Qt 程序员,很可能使用 QTextEdit 并且在 QTextEdit 中插入的数据被序列化和反序列化。因此,我认为这个问题非常重要,并且它对许多 Qt 开发人员很有用。所以我决定和优秀的程序员一起讨论如何实现operator<<(QDataStream, QTextDocument)。否则我们应该等待 Qt 的人会好心地自己做这件事:)。

所以说在 QTextEdit 中我有一些图片和文字。在不同的片段中,文本具有不同的格式。如何获取这种QTextEdit的内容,如何序列化,才能原样显示?

编辑:我知道我可以使用返回 QTextDocument 的 documnet() 方法获取格式化的文本和图像。我也知道 QTextDocument 没有 operator<<(QDataStream, QTextDocument) 并且有写入此运算符的请求但它仍然打开。所以请帮我写这个方法。 我想我应该继承 QTextDocument 类,然后添加一个新成员(一个容器)来存储 QTextEdit 中存在的所有资源名称。然后我应该通过使用我定义的容器迭代它们来序列化所有资源。这是一个好的解决方案吗?如果是,那么你能帮我实现吗?如果不是,请给我一个更好的主意。

最佳答案

你已经在四月份问过这个问题了:

Qt - serialize/deserialaize text and picture

答案还是一样。

  1. 等待 Qt 修复 QTBUG-9258
  2. Perform the serialization yourself

根据您的需要,一种快速而肮脏的方法是使用 QTextEdit::toHtml 获取内容的 HTML 表示形式。 , 然后 base64 encode it .我不确定这将如何处理图片。

请不要重新发布相同的问题。

关于c++ - 如何实现QTextDocument序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254669/

相关文章:

QTableWidget::item() QTableWidget::cellWidget()?

python - 如何在 PyQt4 中保持按钮相对于标签大小的变化不变

android - 来自 Android 的 OpenCV JNI 上的 SIGSEGV

C++ 预处理器条件参数

c++ - 如何创建指针来更新 C++ 中的动态 STL vector ?

c++ - 将 QTextEdit 对象添加到 QMainWindow

python - 突出显示 QTextEdit 文档上的行

c++ - 返回多个数组的函数

C++/Qt memcpy 与 QSharedMemory 崩溃

使用 setw 的 C++ 文本格式不适用于 QT QTextEdit