Qt C++ QNetworkAccessManager
Ostatnio zmodyfikowano 2016-08-21 20:46
Kefirek Temat założony przez niniejszego użytkownika |
Qt C++ QNetworkAccessManager » 2016-08-21 11:56:14 Witam Piszę program, w którym pobieram kurs waluty z http://api.nbp.pl/api/exchangerates/rates/a/nok/ Pobieranie kursu waluty działa. Pobranie następuje z 2 może 3 sekundowym opóźnieniem od pojawienia się MainWindow. Kurs pobierany jest przy starcie programu także kod odpowiedzialny za pobranie kursu umieszczony jest w konstruktorze Klasy MainWindow. Dane o kursie konwertowane są do QString i wartością tą ustawiany jest text QLabel który znajduje się na MainWindow. Następnie Text z QLabel przypisywany jest do finansialState->SetKursNok(ui->LblKursNok->text().toDouble()); Niestety zmienna klasy Finans KursNok, którą ustawia finansialState->SetKursNok ma wartość równą 0. Poniżej wynik działania w debuggerze: finansialState: 0 , //yyyyy Średni kurs: "0.4620" //xxxxx #include "mainwindow.h" #include "ui_mainwindow.h"
MainWindow::MainWindow( QWidget * parent ) : QMainWindow( parent ) , ui( new Ui::MainWindow ) { ui->setupUi( this ); m_networkManager = new QNetworkAccessManager( this ); connect( m_networkManager, SIGNAL( finished( QNetworkReply * ) ), this, SLOT( onRequestCompleted( QNetworkReply * ) ) ); m_networkManager->get( QNetworkRequest( QUrl( "http://api.nbp.pl/api/exchangerates/rates/a/nok/" ) ) ); finansialState = new Finans; finansialState->SetKursNok( ui->LblKursNok->text().toDouble() ); qDebug() << "finansialState: " << finansialState->GetKursNok(); }
MainWindow::~MainWindow() { delete ui; }
void MainWindow::onRequestCompleted( QNetworkReply * reply ) { if( !reply->atEnd() ) { QByteArray data = reply->readAll(); QString dane = data; int lenght = 0; for( int i = 0; i < dane.size(); i++ ) { lenght++; } sredniKursNok = dane.mid(( dane.size() - 9 ), 6 ); qDebug() << "Średni kurs: " << sredniKursNok; ui->LblKursNok->setText( sredniKursNok ); } }
Sens działania programu zależy od wykorzystania kursu waluty do przemnożenia istniejących danych liczbowych umieszczonych w polach edycyjnych, które będą aktualizowane przez przemnożenie przez kurs waluty. Także przy starcie programu ta dana musi być dostępna. Co może być przyczyną tego że mimo występowania w kodzie pierw kodu do pobrania kursu, potem kodu do przypisania kursu do innej zmiennej wykonuje się pierw kod przypisania kursu do innej zmiennej a potem dopiero pobranie kursu - tak jak widać to powyżej w wyniku działania w debuggerze? Pozdrawiam i czekam na podpowiedzi. |
|
mateczek |
» 2016-08-21 18:23:22 finansialState->SetKursNok( ui->LblKursNok->text().toDouble() );
|
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2016-08-21 20:46:36 Dzięki działa. POzdrawiam |
|
« 1 » |