文章目录
- 一、前言
- 二、效果展示
- 三、库文件
- 四、使用
一、前言
目前项目中需要显示数学公式,本来打算采用markdown,但是试了多种方式都不行,然后想过Latex,后面发现MathML,效果还不错,XML格式,然后XML解析的公式可以显示在QtMmlWidget控件中,也可以导出图片,显示在QLabel上。
二、效果展示
三、库文件
链接:https://pan.baidu.com/s/1bF4tuUA2FCfTnzabChVqkA 提取码:d33i
四、使用
//创建QtMmlWidget
m_mml_widget = new QtMmlWidget;
//打开文件槽函数
void MainWindow::openFile(const QString &mml_file_name)
{
//清除
//------------------------------------------------
m_mml_widget->clear();
//读取文件
//------------------------------------------------
QFile file(mml_file_name);
if (!file.open(QIODevice::ReadOnly)) {
qDebug()<<"打开文件失败!";
return;
}
QTextStream stream(&file);
//stream.setEncoding(QTextStream::UnicodeUTF8);
QString text = stream.readAll();
file.close(); //关闭文件
//显示公式
//------------------------------------------------
QString error_msg;
int error_line, error_column;
bool result = m_mml_widget->setContent(text, &error_msg, &error_line, &error_column);
if (!result) {
qDebug()<<"显示公式失败: "<<"Parse error: line " + QString::number(error_line) + ", col " + QString::number(error_column) + ": " + error_msg;
return;
}
//导出图片
//------------------------------------------------
QPixmap pm;
int idx = mml_file_name.lastIndexOf('.');
if (idx != -1) {
QString image_file_name = mml_file_name.mid(0, idx + 1) + "png";
if (pm.load(image_file_name))
m_compare_image->setPixmap(pm); //m_compare_image是一个QLabel
}
}