Kehitys/Oppikurssit/Qt4 Ruby-oppikurssi/Kappale 4

Development | Tutorials | Qt4 Ruby Tutorial
Revision as of 15:16, 18 July 2012 by FuzzyBot (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Other languages:English 100% • ‎Finnish 100% • ‎Russian 100%


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

Contents

Olkoon siellä käyttöliittymäkomponentteja

Qt4 Ruby Tutorial Screenshot 4.png

Tiedostot:

Yleiskuva

Tämä esimerkki näyttää kuinka luot oman käyttöliittymäkomponentin, ja kuvailee kuinka ohjaat käyttöliittymäkomponentin 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ämme, 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 -ilmentymä).

QObject::tr() -funktiokutsu merkkijonoliteraalin 'Quit' ympärillä merkitsee kotoistettavan merkkijonon, mikä tekee mahdolliseksi sen muuttamisen ajoaikaisesti kotoistamistiedoston sisältöön perustuen. On hyvä tapa käyttää metodia 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 kuin jos 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()

Tässä teemme uudesta tytärkomponentistamme ilmentymän, asetamme sen pääkäyttöliittymäkomponentiksi, ja suoritamme sovelluksen.

Sovelluksen suorittaminen

Tämä ohjelma käyttäytyy hyvin samalla tavoin kuin edellinen ohjelma. Erot ovat siinä tavassa, jolla toteutamme sen. Se käyttäytyy kuitenkin hiukan eri tavalla. Yritä vain muuttaa sen kokoa huomataksesi eron.

Harjoitukset

Yritä luoda toinen MyWidget-objekti. Mitä tapahtuu?

Yritä lisätä lisää painikkeita ja laita muita käyttöliittymäkomponentteja kuin Qt::PushButton.


This page was last modified on 18 July 2012, at 15:16. This page has been accessed 1,443 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal