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

From KDE TechBase
(Created page with "quit = Qt::PushButton.new(tr('Poistu'), self)")
(Created page with "Tässä luomme ja asetamme tämän käyttöliittymäkomponentin tytärkomponentin (uuden käyttöliittymäkomponentin emo on '''<tt>self</tt>, ts. '''<tt>MyWidget</ttt>'''-ilment...")
Line 74: Line 74:
</syntaxhighlight>
</syntaxhighlight>


Here we create and set up a child widget of this widget (the new widget's parent is '''<tt>self</tt>''', i.e. the '''<tt>MyWidget</tt>''' instance).  
<span class="mw-translate-fuzzy">
Tässä luomme ja asetamme tämän käyttöliittymäkomponentin tytärkomponentin (uuden käyttöliittymäkomponentin emo on '''<tt>self</tt>, ts. '''<tt>MyWidget</ttt>'''-ilmentymä.
</span>


The [http://doc.qt.nokia.com/latest/qobject.html#tr QObject::tr()] function call around the string literal 'Quit' marks the string for translation, making it possible to change it at run-time based on the contents of a translation file. It is a good habit to use [http://doc.qt.nokia.com/latest/qobject.html#tr QObject::tr()] around all user-visible strings, in case you decide later to translate your application to other languages.  
The [http://doc.qt.nokia.com/latest/qobject.html#tr QObject::tr()] function call around the string literal 'Quit' marks the string for translation, making it possible to change it at run-time based on the contents of a translation file. It is a good habit to use [http://doc.qt.nokia.com/latest/qobject.html#tr QObject::tr()] around all user-visible strings, in case you decide later to translate your application to other languages.  

Revision as of 11:56, 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ä.

The QObject::tr() function call around the string literal 'Quit' marks the string for translation, making it possible to change it at run-time based on the contents of a translation file. It is a good habit to use QObject::tr() around all user-visible strings, in case you decide later to translate your application to other languages.

The Qt::Widget::setGeometry() call sets both the widget's screen position and the size. It is equivalent to calling Qt::Widget::move() followed by Qt::Widget::resize().

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

The $qApp pointer is a global variable created when you require 'Qt'. It points to the application's unique Qt::Application instance.

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.