很多的md编辑器,例如typora,cmd markdown等等是用什么做的,qt可以么?

我对前端不是很清楚,但它们都需要js,css的什么,所以我有两个问题:

(1)用qt可以做的话,它的渲染怎么来做啊?

(2)如果qt不好做的话,那用什么来做或者什么技术,编程语言?

阅读 4.6k
2 个回答

markdown 只是一套语法格式,跟你如何实现它又没关系。

比如,“源文件”的文本是:

**强调的文本**

这里,两个星号这种格式,是 markdown 定义的。但是,如何显示它,不是 markdown 关心的。

如果你是在浏览器“渲染”这个“源文件”,那么它的输出形式,可以是:

<b>强调的文本</b>

也可以是:

<span class="em">强调的文本</span>

看你怎么实现而已。

如果不是普通浏览器环境,或者说,是浏览器,但是你想把上面的“源文件”的内容,提交到 discuz! 的论坛中,而这类论坛支持的是一种叫 bbcode 的格式, 那么对应的实现,就应该让源文件输出为:

[b]强调的文本[/b]

前面说的, “对应的实现”就是指代码要干的事。

开放的代码中,很多已经做了这些实现,不过,多是从一种标记语言,到另一种标记语言,比如:

  • 从 markdown 到 html
  • 从 markdown 到 bbcode
  • 从 markdown 到 LaTeX

这些是你很容易就能找到的,现成的,开源的东西。它们中,有用 Python 写的,有用 NodeJS 写的,也有用 Haskell 写的。

回到你的问题,就是: 从 markdown -> Qt Code 啊,只是这里的 Qt Code 不是一种标记语言,渲染当然是 Qt 的机制来处理,或者你在 Qt 里装个浏览器引擎什么的,让“Qt 也支持 HTML 显示”也是一种方法。

带格式的 Markdown 页面基本上都是在浏览器上(内嵌 or 外联)渲染的。


你可以对 Markdown 中的各种符号替换成 HTML 符号,比如:
** 符号替换成 <strong></strong>
## 符号替换成 <h2></h2>
[caption](link) 替换成 <a href="link">caption</a>等等。

然后头尾加上 HTML 信息,加上 title,就可以实现简单的 Markdown 编辑器。


复杂一点,设计交互界面;再复杂一点,自己研究“代码高亮”。

像 Typora 那样的富文本编辑器是很难做出来的,里面应该有相当多的技术吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题