引入
Markdown是一种轻量级标记语言,Qt 是支持 Html 的显示,那么支持 Markdown 吗?答案当然是支持的
效果图:
如何实现
注:Qt 是指 C++ Qt,PyQt 就是指 PyQt
在 Qt 和 PyQt 中的 QTextBrowser
、QTextEdit
等控件都有一个函数:
ui->XXX->setMarkdown("XXX"); // Qt
XXX.setMarkdown("XXX"); # PyQt
那么能不能用呢?当然是可以的,下面是一个示例:
就先以下面的 Markdown 为例:
**Hello** *World*~~!~~
Qt:
#include <QApplication>
#include <QMainWindow>
#include <QTextBrowser>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow *w = new QMainWindow();
QTextBrowser *br = new QTextBrowser(w);
br->setMarkdown("**Hello** *World*~~!~~ ");
w->show();
return a.exec();
}
PyQt:
import sys
import PyQt5.QtWidgets as QtWidgets
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
br = QtWidgets.QTextBrowser(widget)
br.setMarkdown("**Hello** *World*~~!~~")
widget.show()
sys.exit(app.exec_())
所以 Qt 是支持 Markdown
示例:一个实时显示 Markdown 结果的编辑器
注意:未完成打开、保存、另存为等高级功能,只有实时显示的功能
Qt
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);/*
ui->textBrowser->setMarkdown("```python\n"
"import os\n"
"```\n"
"**b**\n");*/
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_textEdit_textChanged()
{
if (ui->comboBox->currentIndex()==0){
ui->textBrowser_2->setMarkdown(ui->textEdit->toPlainText());
return;
}
ui->textBrowser_2->setHtml(ui->textEdit->toPlainText());
}
void