Qt-ohjelmointi
Esimerkkejä
Näissä esimerkeissä oletetaan, että backendissä on web-tokenilla suojattu endpoint http://localhost:3000/book, jonne on tehty CRUD operaatiot book-taululle. Mainittu book-taulu luotu koodilla
CREATE TABLE book(
id_book SMALLINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
author VARCHAR(255),
isbn VARCHAR(255)) Engine=InnoDB;
Http GET

Tässä esimerkissä esitetään, kuinka book-taulun data saadaan haettua Qt-sovellukseen.

Jotta esimerkki toimii, on ensin kirjauduttava sovellukseen ja tähän tarvitaan login-systeemi, jossa käytetään http-post metodia.

  1. Luo uusi Qt Widget projekti
  2. Lisää pro-tiedostoon rivi:
    QT +=network
  3. Lisää mainwindow.h tiedostoon rivit:
    #include <QtNetwork>
    #include <QNetworkAccessManager>
    #include <QJsonDocument>
    
  4. Lisää mainwindow.h tiedoston private osaan:
    QNetworkAccessManager *getManager;
    QNetworkReply *reply;
    QByteArray response_data;
    
  5. Lisää mainwindow.h tiedostoon rivit:
    private slots:
        void getBookSlot (QNetworkReply *reply);
    
  6. Lisää mainwindow.ui-tiedostoon LineEdit ja anna sen nimeksi textBooks. Lisää myös PushButton ja sille clicked slot ja kirjoita siihen koodi
    QString site_url="http://localhost:3000/book";
    QNetworkRequest request((site_url));
    //WEBTOKEN ALKU
        QByteArray myToken="Bearer "+webToken;
        request.setRawHeader(QByteArray("Authorization"),(myToken));
    //WEBTOKEN LOPPU
    getManager = new QNetworkAccessManager(this);
    
    connect(getManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(getBookSlot(QNetworkReply*)));
    
    reply = getManager->get(request);
    
  7. Lisää tiedostoon mainwindow.cpp funktio:
    void MainWindow::getBookSlot (QNetworkReply *reply)
    {
     response_data=reply->readAll();
     qDebug()<<"DATA : "+response_data;
     QJsonDocument json_doc = QJsonDocument::fromJson(response_data);
     QJsonArray json_array = json_doc.array();
     QString book;
     foreach (const QJsonValue &value, json_array) {
        QJsonObject json_obj = value.toObject();
        book+=QString::number(json_obj["id_book"].toInt())+", "+json_obj["name"].toString()+", "+json_obj["author"].toString()+"\r";
     }
    
     ui->textBooks->setText(book);
    
     reply->deleteLater();
     getManager->deleteLater();
    }
    

Harjoituksessa kirjat näytetään TextEdit oliossa. Voisit myös tutkia harjoituksen Table View avulla, kuinka saisit näytettyä kirjat QtableView:ssä.



Toggle Menu