Qt-ohjelmointi
Library, jossa UI

Esimerkissä tutkitaan kuinka luodaan Library, jossa on myös käyttöliittymä. Tehdään Library nimeltään mydll. Libraryyn lisätään Ui, jossa on painike ja tekstikenttä. Kun painiketta painetaan käyttäjä antama arvo "palautetaan" Librarystä ja Ui suljetaan.

Librarystä "exportataan" funktiot

  • openDllDialog, joka avaa Ui-formin
  • returnFromDll, joka palauttaa Librarystä arvon

Kun Library(mydll) on luotu, tehdään "exe-projekti" eli sovellus, joka hyödyntää Libraryä. Sovellus toimii seuraavasti:

  1. Kun sovellus käynnistetään avautuu oheinen Ui

    Kuva1. Suorituksen aloitus
  2. Kun painiketta painetaan avautuu oheinen Ui(joka on libraryssä)

    Kuva2. Libraryn Ui
  3. Kun edelliseen kirjoitetaan jokin sana (esim. test), Ui suljetaan ja palataan aiempaan Ui:hin, joka näyttää tältä

    Kuva3. Suorituksen loppu

Library (dll)
  1. Luo uusi projekti (C++ Library) nimeltään mydll
    • Type=Shared Library
    • Qt module=Gui
  2. Lisää Ui:
    • Klikkaa projektin nimeä->Add New->Qt->Qt Designer Form Class
    • Valitse Dialog without Buttons
    • Anna nimeksi Dialog
  3. Muokkaa pro-tiedostoa seuraavasti
    QT += gui
    QT += widgets
    
  4. Lisää Ui-formiin painike(nimi=btnSet) ja lineEdit(nimi=textValue)
  5. Luo buttonille clicked-slot
  6. Lisää dialog.h tiedoston private osaan rivi
    QString dialogValue;
    
  7. Lisää edelliselle muuttujalle Getter ja Setter
  8. Lisää buttonin clicked slottiin rivit
    QString a=ui->textValue->text();
    this->setDialogValue(a);
    this->close();
    
  9. Muokkaa tiedosto mydll.h muotoon
    #ifndef MYDLL_H
    #define MYDLL_H
    
    #include "mydll_global.h"
    #include "dialog.h"
    #include <QString>
    #include <QObject>
    #include <QDebug>
    
    class MYDLL_EXPORT Mydll
    {
    public:
        Mydll();
        void openDllDialog();
        QString getDllValue() const;
    
    private:
        Dialog *objectDialog;
        QString dllValue;
    };
    
    #endif // MYDLL_H
    
  10. Muokkaa tiedosto mydll.cpp muotoon
    #include "mydll.h"
    
    Mydll::Mydll()
    {
    }
    
    void Mydll::openDllDialog()
    {
        objectDialog=new Dialog;
        objectDialog->exec(); //huom! Tässä on käytettävä nimenomaan exec-metodia
        dllValue=objectDialog->getDialogValue();
        qDebug()<<"opendialog dllValue="+dllValue;
        delete objectDialog;
    }
    
    QString Mydll::getDllValue() const
    {
        qDebug()<<"getDialogvalue dllValue="+dllValue;
        return dllValue;
    }
    
  11. Käännä sovellus (huom! Et voi suorittaa sitä)
Suoritettava sovellus ("exe-projekti")
  1. Luo uusi Qt-Widget sovellus (nimeksi vaikka useDll)
  2. Lisää pro-tiedostossa Library (ohjeet alla) ja käännä sovellus
  3. Lisää Ui:ssa button ja lineEdit (kts. kuva3)
  4. Lisää tiedostoon mainwindow.h rivi
    #include "mydll.h"
    
    Ja private osaan rivi
    Mydll *objectMyDll;
    
  5. Lisää luokan muodostimeen (tiedostossa mainwindow.cpp) rivi
    objectMyDll=new Mydll;
    
    Ja tuhoa em. olio luokan tuhoajassa.
  6. Lisää buttonin clicked slottiin rivit
    objectMyDll->openDllDialog();
    QString valueFromDll=objectMyDll->getDllValue();
    ui->textValue->setText(valueFromDll);
    
  7. Testaa, että sovellus toimii edellä kuvatulla tavalla.
Libaryn lisääminen

Seuraava ohje toimii vain kun käytössä on qmake

  1. pro-tiedostossa klikkaa tyhjällä alueella hiiren oikeaa painiketta ja valitse "Add Library"
  2. avautuneessa ikkunassa valitse "External Library" ja paina Next
  3. tee valinnat kuten alla (riippuen käyttöjärjestelmästäsi)
    kuva



Toggle Menu