我正在计划一个新的桌面应用程序。它将为 HL7 文件(OSS 项目)提供一个所见即所得的编辑器。HL7 是医院常用的一种结构化文件格式,用于在系统之间交换数据。
格式的基本结构由\r
分隔的记录组成。一条记录可以有 N 个|
分隔的字段。字段本身可以细分为组件^
,子组件&
和字段可以重复~
(类似于数组)。每种消息类型都有不同数量的字段/组件和子组件。可以省略记录末尾的空字段。
简单记录示例:
OBX|14|NM|0050–5^Calcium||8.9|mg/dl|8.4–10.4||||F
我已经实现了一个高效的解析器,它将整个文件转换为 C 中的分层数据结构。我想实现一个允许像在文本编辑器中编辑这些文件的应用程序。我想在任何时候保留底层的层次结构数据结构,因此很容易在用户更改时快速验证每个字段的结构和内容。
另外值得注意的是,我已经实现了一个查看器,其中文档结构显示在QTreeView
. 该结构使用QAbstractItemModel
.
现在我的实际问题是:我将如何解决在 Qt 中使用带有结构化数据模型的文本编辑器的问题。我做了一些研究:
- 有一个
QDomDocument
,似乎可以使用 xml 数据。我可以将我的结构转换为 XML,但是 dom 对象可以与文本编辑器一起使用吗? - 有没有办法将像文档模型这样的树绑定到
QTextEdit
orQPlainTextEdit
? - 是否可以将 a 绑定到or
QAbstractItemModel
中的文档?QTextEdit
QPlainTextEdit
解决一旦通过在文本字段中编辑更改文本和/或严格性而更新树的文本表示的问题的最佳方法是什么?
性能和跨平台能力很重要,所以这个项目将用 C++ 实现。
感谢您提供任何建议和示例,如果您有的话。
-S