Search
Cvičení je zaměřeno na vytvoření jednoduché databazáze, do které se ukládá aktuální cena některé z kryptoměn, např. doge. Pro získání ceny kryptoměny existuje několik webových API, zde použijeme API cryptonator.com.
Základ programu je podobný jako ve cvičení, kde jsme získávali informace o covidové situaci nebo o aktuálním počasí. Zde je kód umístěn do třídy, kterou budeme dále rozšiřovat.
/* main.cpp */ #include <QApplication> #include "crypto.h" int main(int argc, char ** argv) { QApplication a (argc, argv); CryptoWidget w; w.show(); return a.exec(); }
/* crypto.h */ #include <QEventLoop> #include <QWidget> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QDebug> #include <QJsonDocument> #include <QJsonObject> #include <QJsonArray> class CryptoWidget : public QWidget { Q_OBJECT public: CryptoWidget (QWidget * parent = 0) : QWidget(parent) { fetch(); } public slots: void fetch () { QEventLoop loop; QNetworkAccessManager mgr; QObject::connect (&mgr, QNetworkAccessManager::finished, &loop, QEventLoop::quit); QNetworkRequest req (QUrl ("https://api.cryptonator.com/api/ticker/doge-usd")); QNetworkReply *rep = mgr.get(req); loop.exec(); if (rep->error() == QNetworkReply::NoError) { QString rep_str = (QString)rep->readAll(); QJsonDocument res_json = QJsonDocument::fromJson(rep_str.toUtf8()); QJsonObject data = res_json.object(); // timestamp unsigned long time = data["timestamp"].toDouble(); qDebug() << time; QJsonObject ticker = data["ticker"].toObject(); // price double price = QString(ticker["price"].toString()).toDouble(); qDebug() << price; QString base = ticker["base"].toString(); qDebug() << base; } } };
# crypto.pro TEMPLATE = app TARGET = 01-crypto QT += widgets network CONFIG += console HEADERS += crypto.h SOURCES += main.cpp
Kompletní kód příkladu založeného na výše uvedeném kódu je k dispozici na gitlabu.
Celkem jednoduše lze vylepšit program tak, aby sledoval dvě kryptoměny zároveň. Kód je opět na gitlabu.