JKQtPlotter/examples/jkqtmathtext_simpletest
2022-04-22 13:27:31 +02:00
..
CMakeLists.txt fixed CMakeLists.txt cmake-version to work on appveyor Linux build 2022-04-18 22:42:18 +02:00
jkqtmathtext_simpletest_and_lib.pro using CMake now to build examples 2019-06-20 22:24:47 +02:00
jkqtmathtext_simpletest.cpp more required changes for Qt6 compatibility 2022-04-22 13:27:31 +02:00
jkqtmathtext_simpletest.pro several minor bugfixes to QMake build system 2020-10-19 16:05:18 +02:00
README.md improved documentation 2019-02-03 20:25:25 +01:00

Example (JKQTMathText): A simple usage example

JKQTMathText is a hand-written LaTeX-renderer for Qt (implemented in native C++, using Qt). It supports a large set of standard LaTeX markup and can render it to a QPainter.

This project (see ./examples/jkqtmathtext_simpletest/) simply creates a QLabel (as a new window) that displays a rendered LaTeX equation (here the time-dependent Schrödinger equation). The QMake project looks like this (see jkqtmathtext_simpletest.pro:

# include JKQTMathText source-code, including the open-source XITS fonts
include(../../lib/jkqtmathtext_with_xits.pri)
SOURCES += jkqtmathtext_simpletest.cpp

# if you don't want to use the XITS fonts, use this line (and uncomment the 
# last two line!):
#include(../../lib/jkqtmathtext.pri)

CONFIG += qt
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

TARGET = jkqtmathtext_simpletest

And the source code of the main application is (see jkqtmathtext_simpletest.cpp:

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include "jkqtmathtext/jkqtmathtext.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    // we use a simple label to display the math text
    QLabel lab;

    // 1. we will paint into a QPixmap
    QPixmap pix(600,400);
    pix.fill(QColor("white"));
    QPainter painter;

    // 2. now we create a JKQTMathText object.
    //    Also we configure the JKQTMathText to use the XITS fonts that
    //    were included in the *.pro-file
    JKQTMathText mathText;
    mathText.useXITS();
    mathText.setFontSize(20);

    // 3. now we parse some LaTeX code (the Schroedinger's equation), so
    //    we can draw it onto the QPixmap in the next step
    mathText.parse("$\\left[-\\frac{\\hbar^2}{2m}\\frac{\\partial^2}{\\partial x^2}+V(x)\\right]\\Psi(x)=\\mathrm{i}\\hbar\\frac{\\partial}{\\partial t}\\Psi(x)$");

    // 3. here we do the painting
    painter.begin(&pix);
    mathText.draw(painter, Qt::AlignCenter, QRectF(0,0,pix.width(), pix.height()), false);
    painter.end();

    // now we display and resize the label as a window
    lab.setPixmap(pix);
    lab.show();
    lab.resize(600,400);

    return app.exec();
}

The result looks like this:

jkqtmathtext_simpletest