【发布时间】:2012-11-11 03:43:07
【问题描述】:
我有兴趣创建一个行为类似于代码区域的文本对象类型(继承 QTextObjectInterface):
- 独特的背景
- 边框
- 等宽字体
- 可编辑的内容
- 实例需要可识别代码,以便可以提取其中的内容(将代码与周围内容分开)
- 保存/加载(从常规 html 文件)
- 语法突出显示会是一个加分项,但实际上并不是必需的
文档的其他区域需要以通常的方式运行(字体属性可编辑、颜色可编辑等)。
Qt 提供了an example 用于使用QTextEdit 实现自定义文本对象。这看起来很难,因为新的文本对象不能利用 QTextEdit / QTextDocument 中的现有基础设施。
不同类型对象的基类,可以将QTextDocument 的各个部分组合在一起
因此继承它可能是一种选择,但它在 Qt SDK 包中的源文件和 Google 搜索都没有显示有用的信息。
QTextFrame 继承 QTextObject 因此,如果要找到有关此路径的一些提示,它可能是一个可行的基类。
在一个简单的 HTML 文件中,所有这些(语法高亮除外)都很容易。 QTextEdit 将 html 作为输入并能够导出 html,但在此过程中结构丢失。
<code class="code-sample">
int i = 0;
</code>
QWebView 是只读的,顺便说一下。它宣传:
部分 HTML 文档可以通过 HTML 元素的 contenteditable 属性进行编辑。
可能还有其他平台可以轻松使用,但文本编辑器需要在 Qt Creator 中作为插件使用,因此使用 Qt 框架是有意义的。
底线:如何在QTextEdit 小部件中实现代码区域?
后期编辑:
- 使用来自主干的 Qt sdk(将自身标识为 4.8.4)
- 来自主干的 Qt Creator (Qt Creator 2.6.81)
【问题讨论】:
标签: c++ qt custom-controls qtextedit qtextdocument