Qt - program konsolowy do generowania wykresów słupkowych SVG

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2692 razy

Prosty program konsolowy, który w zasadzie stworzyłem z myślą przetestowania nowego zestawu narzędzi, jakie na własne potrzeby wykonuję, a które umożliwi mi szybkie, łatwe i przyjemne generowanie plików HTML z elementami grafiki SVG. Program działa na zasadzie podania w konsoli systemowej argumentu pozwalającego wygenerować wykres w HTML-u. Oto przykładowe wywołanie programu pod systemem Windows:

SvgCreator.exe "value={1;opis 1}|value={2;opis 2}|value={3;opis3}|xLabel=Os X|yLabel=Os Y|title=Przykladowy wykres|id=wykres|height=400|width=600"

W systemie Linux:

./SvgCreator "value={1;opis 1}|value={2;opis 2}|value={3;opis3}|xLabel=Os X|yLabel=Os Y|title=Przykladowy wykres|id=wykres|height=400|width=600"

Możliwe jest oczywiście wygenerowanie do jednego pliku HTML kilku takich wykresów:

SvgCreator.exe "value={1;opis 1}|value={2;opis 2}|value={3;opis3}|xLabel=Os X|yLabel=Os Y|title=Przykladowy wykres|id=wykres|height=400|width=600" "value={1;opis 1}|value={2;opis 2}|value={3;opis3}|xLabel=Os X|yLabel=Os Y|title=Przykladowy wykres 2|id=wykres|height=400|width=600"

Powyższe wywołanie spowoduje utworzenie pliku HTML z dwoma wykresami. Przykład wygenerowanego w ten sposób wykresu zamieszczam poniżej.

Przykladowy wykres
Os X Os Y 1 1 2 2 3 3

Legenda wykresu:

  • 1) opis 1 = 1

  • 2) opis 2 = 2

  • 3) opis3 = 3

Sam kod użyty w funkcji main wygląda następująco:

int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qsrand(static_cast<uint>(time(nullptr))); QHtmlPage *htmlPage = new QHtmlPage("Qt html + svg"); htmlPage->addJavaScriptCode(svg::diagram::SvgDiagramPale::getJavaScriptDiagramCode()); // local css files for(int i = 1; i < argc; i++){ qDebug() << argv[i]; htmlPage->getBody()->addHtmlChild(svg::diagram::SvgDiagramPale::getSvgDiagramPale(QString::fromLatin1(argv[i]).toUtf8())); } htmlPage->addLocalStyle( "svg.diagram { " "display: block;" "margin: auto;" "max-width: 100%;" "}" "figcaption.title { " "font-size: 14pt;" "text-align: center;" "}" "figcaption.diagramLegend {" "margin: auto;" "padding: 0 0 0 0;" "width: 800px;" "max-width: 100%;" "background-color: #aaaaaa;" "}" "ul.diagramLegend { " "list-style-type: none;" "background-color: #aaaaaa;" "width: 100%;" "margin: auto;" "padding: 0;" "}" "ul.diagramLegend > li {" "display: inline-table;" "width: 25%;" "margin: 0 0 0 0;" "padding: 0 0 0 0;" "}" "ul.diagramLegend > li > p { " "margin-left: 10px;" "margin-right: 10px;" "}" "ul.diagramLegend > li:hover { " "color: white;" "}" "figcaption.diagramLegend > p { " "padding: 10px 0 0 10px;" "background-color: #aaaaaa;" "}" ); QFile file("htmlWithSvg.html"); file.open(QIODevice::WriteOnly); QTextStream textStream(&file); textStream << htmlPage; file.close(); delete htmlPage; return a.exec(); }

Dokładny przykład generowanego pliku można zobaczyć tutaj.

Propozycje książek

Załączniki:

Wersja na Windowsa programu SvgCreator przeznaczonego do generowania wykresów SVG osadzonych w pliku HTML