QtMmlWidget是一个Qt类,可用于呈现用MathML 2.0编写的数学公式。
?参考页:QtMmlWidget Class Reference (huihoo.com)
一般MathML 2.0编写的数学公式都保存于一个单独的.xml文件当中,然后QtMmlWidget类去读取这个.xml的内容,就可以显示公式了。
QT += xml
#ifndef DESIGN_H
#define DESIGN_H
#include <QWidget>
#include <qtmmlwidget.h> // 就看这句哈
namespace Ui {
class design;
}
class design : public QWidget
{
Q_OBJECT
public:
explicit design(QWidget *parent = nullptr);
~design();
private:
Ui::design *ui;
};
#endif // DESIGN_H
当然你也可以不去界面去提升,搞的很复杂,你直接new一个QtMmlWidget也是可以的。?
?注意:"test.xml"我也放在第一步下载的压缩包了。 在测试的时候,拷贝到项目文件夹中即可,具体放在什么路径,要根据你Qt项目的编译生成的exe的路径。一般是放在.exe文件的上一级目录里。怎么让你的代码能够得到test.xml的路径,这个问题我就不细讲了。
#include "design.h"
#include "ui_design.h"
design::design(QWidget *parent) :
QWidget(parent),
ui(new Ui::design)
{
ui->setupUi(this);
// 从这里开始
ui->widget->clear();
//读取文件
//------------------------------------------------
QFile file(".\\test.xml");
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;
ui->widget->setBaseFontPointSize(20); // 设置公式基本字体大小
bool result = ui->widget->setContent(text, &error_msg, &error_line);
}
design::~design()
{
delete ui;
}
下面给出我直接new一个QtMmlWidget的代码,不用去界面操作。
#include "design.h"
#include "ui_design.h"
design::design(QWidget *parent) :
QWidget(parent),
ui(new Ui::design)
{
ui->setupUi(this);
QtMmlWidget* test = new QtMmlWidget(this); // 注意这里
test->clear();
//读取文件
//------------------------------------------------
QFile file(".\\test.xml");
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;
test->setBaseFontPointSize(20);
test->setContent(text, &error_msg, &error_line);
test->show(); // 注意这里
}
design::~design()
{
delete ui;
}
Qt显示数学公式-CSDN博客?这个网址会给你讲一些MathML的语法
math (myscript.com)? 这个网址,可以鼠标手写公式,然后转化程MathML,你复制代码,拷贝到一个文本文件,保存后重命名为.xml文件即可。
诚心想弄,你就跟着这个博客一步一步弄,我个人觉得MathML的语法其实挺简单的,我只花了半小时基本上就搞懂了。 然后还能直接在Qt中用代码来生成公式对应的xml文件,动态显示公式,可以玩出花儿来。这些复杂的操作我就不展示了,加油。
最后愿我们共同进步!?感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。?