Development/Tutorials/Qt4 Ruby Tutorial/Chapter 04/fi: Difference between revisions

    From KDE TechBase
    (Created page with "[http://doc.qt.nokia.com/latest/qwidget.html#geometry-prop Qt::Widget::setGeometry()]-kutsu asettaa sekä käyttöliittymäkomponentin näyttösijainnin että sen koon. Se on sam...")
    (Created page with "Osoitin '''<tt>$qApp</tt>''' on yleismuuttuja, joka luodaan kun '''<tt>pyydät 'Qt'</tt>''':ta. Se osoittaa sovelluksen uniikkiin [http://doc.qt.nokia.com/latest/qapplication.htm...")
    Line 86: Line 86:
    </syntaxhighlight>
    </syntaxhighlight>


    The '''<tt>$qApp</tt>''' pointer is a global variable created when you '''<tt>require 'Qt'</tt>'''. It points to the application's unique [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] instance.
    Osoitin '''<tt>$qApp</tt>''' on yleismuuttuja, joka luodaan kun '''<tt>pyydät 'Qt'</tt>''':ta. Se osoittaa sovelluksen uniikkiin [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]-ilmentymään.


    <syntaxhighlight lang="ruby">
    <syntaxhighlight lang="ruby">

    Revision as of 12:02, 27 August 2011

    Other languages:


    Development/Tutorials/Qt4 Ruby Tutorial/Chapter 04


    Olkoon siellä käyttöliittymäkomponentteja
    Tutorial Series   Qt4 Ruby -oppikurssi
    Previous   Oppikurssi 3 - Perhearvot
    What's Next   Oppikurssi 5 - Lohkojen rakentaminen
    Further Reading   n/a

    Olkoon siellä käyttöliittymäkomponentteja

    Tiedostot:

    Yleiskuva

    Tämä esimerkki näyttää kuinka luot oman käyttöliittymäkomponentin, ja kuvailee kuinka ohjaat käyttöliittymäkomponenti minimi- ja maksimikokoa.

    require 'Qt4'
    
    class MyWidget < Qt::Widget
      def initialize(parent = nil)
        super
        setFixedSize(200, 120)
    
        quit = Qt::PushButton.new(tr('Poistu'), self)
        quit.setGeometry(62, 40, 75, 30)
        quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
    
        connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
      end
    end
    
    app = Qt::Application.new(ARGV)
    
    widget = MyWidget.new()
    widget.show()
    
    app.exec()
    

    Läpikäynti rivi riviltä

    class MyWidget < Qt::Widget
    

    Tässä luomme uuden luokan. Koska tämä luokka periytyy komponentista Qt::Widget, uusi luokka on käyttöliittymäkomponentti ja saattaa olla ylimmän tason ikkuna tai tytärkäyttöliittymäkomponentti (kuten Qt::PushButton edellisessä kappaleessa).

    def initialize(parent = nil)
      super
    

    Tällä luokalla on vain yksi jäsen, konstruktori (niiden jäsenien lisäksi, jotka se perii komponentilta Qt::Widget). Konstruktori on vakio Qt-käyttöliittymäkomponenttikonstruktori; sinun pitäisi aina käyttöliittymäkomponenttia luodessa lisätä samanlainen konstruktori.

    Argumentti on sen emokäyttöliittymäkomponentti. Ylimmän tason ikkunan luomiseksi määrittele emokomponentiksi nil. Kuten voit nähdä, tämän käyttöliittymäkomponentin oletukset osoittavat sen olevan ylimmän tason ikkuna.

    Kuten useimmat käyttöliittymäkomponentit, se vain välittää parent-parametrin Qt::Widget-konstruktorille. (Jos olet uusi Ruby-kielessä, niin kutsumalla super ilman mitään parametreja välitetään automaattisesti kaikki metodin vastaanottamat parametrit superluokan samannimiselle metodille. Update: Ilmeisesti on myös tärkeää jättää pois sulkeet — kutsumalla super() kutsutaan superluokan samanniminen metodi tyhjällä parametriluettelolla.)

        setFixedSize(200, 120)
    

    Koska tämä käyttöliittymäkomponentti ei tiedä, kuinka koon muuttamisia käsitellään, me korjaamme sen koon. Seuraavasssa kappaleessa näytämmä, kuinka käyttöliittymäkomponentti voi vastata käyttäjältä saapuviin koon muuttamistapahtumiin.

    quit = Qt::PushButton.new(tr('Poistu'), self)
    quit.setGeometry(62, 40, 75, 30)
    quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
    

    Tässä luomme ja asetamme tämän käyttöliittymäkomponentin tytärkomponentin (uuden käyttöliittymäkomponentin emo on self, ts. MyWidget</ttt>-ilmentymä.

    QObject::tr()-funktiokutsu merkkijonoliteraalin 'Quit' ympärillä merkitsee kotoistettavan merkkijonon, tehden sen mahdolliseksi muuttaa ajoaikaisesti kotoistamistiedoston sisältöön perustuen. On hyvä tapa käyttää QObject::tr() käyttäjän näkemien merkkijonojen ympärillä siinä tapauksessa, että päätät myöhemmin kotoistaa sovelluksesi muille kielille.

    Qt::Widget::setGeometry()-kutsu asettaa sekä käyttöliittymäkomponentin näyttösijainnin että sen koon. Se on sama, kun kutsuttaisiin metodia Qt::Widget::move(), jota seuraa Qt::Widget::resize().

    connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
    

    Osoitin $qApp on yleismuuttuja, joka luodaan kun pyydät 'Qt':ta. Se osoittaa sovelluksen uniikkiin Qt::Application-ilmentymään.

    app = Qt::Application.new(ARGV)
    
    widget = MyWidget.new()
    widget.show()
    
    app.exec()
    

    Here we instantiate our new child, set it to be the main widget, and execute the application.

    Running the Application

    This program is very similar in behavior to the previous one. The difference lies in the way we have implemented it. It does behave slightly differently, however. Just try to resize it to see.

    Exercises

    Try to create another MyWidget object. What happens?

    Try to add more buttons or put in widgets other than Qt::PushButton.