Qt - program konsolowy do generowania wykresów słupkowych SVG
Stronę tą wyświetlono już: 1605 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.
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.

Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski

Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz

Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha

Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams

Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis

Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół

Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz

Tytuł:
OpenCV 3. Komputerowe rozpoznawanie obrazu w C++ przy użyciu biblioteki OpenCV
Autor:
Adrian Kaehler, Gary Bradski

Tytuł:
C++ w 24 godziny. Wydanie VI
Autor:
Rogers Cadenhead, Jesse Liberty

Tytuł:
C++ Optymalizacja kodu. Sprawdzone techniki zwiększania wydajności
Autor:
Guntheroth Kurt