Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01/ru: Difference between revisions

From KDE TechBase
(Created page with "Пример 2: Выход по нажатию")
(Updating to match new version of source page)
 
(26 intermediate revisions by one other user not shown)
Line 1: Line 1:
<languages />
<languages />
{{Template:I18n/Language Navigation Bar|Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01}}


{{TutorialBrowser/ru|
{{TutorialBrowser/ru|
Line 10: Line 8:
}}
}}


== Hello World! ==
== Здравствуй, мир! ==
[[Image:Qt4_Ruby_Tutorial_Screenshot_1.png|center]]
[[Image:Qt4_Ruby_Tutorial_Screenshot_1.png|center]]
Files:
Файлы:
* [http://www.darshancomputing.com/qt4-qtruby-tutorial/tutorial/t1/t1.rb t1.rb]
* [http://www.darshancomputing.com/qt4-qtruby-tutorial/tutorial/t1/t1.rb t1.rb]


=== Overview ===
=== Обзор ===


This first program is a simple "Hello world" example.  
Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знания, необходимые для написания работоспособного приложения на Qt. Выше приведён снимок экрана программы.
It contains only the bare minimum you need to get a Qt application up and running.  
The picture above is a screenshot of this program.


Here's the complete source code for the application:
Исходный код приложения:


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 35: Line 31:
</syntaxhighlight>
</syntaxhighlight>


=== Intro ===
=== Введение ===


The top level in a QtRuby application usually only needs to perform some kind of initialization and then pass control to the Qt library,
Главный файл в приложении на QtRuby обычно занимается только инициализацией, после чего передаёт управление библиотеке Qt, которая потом сообщает программе о действиях пользователя через события.
which then tells the program about the user's actions via events.


There has to be exactly one [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] object in every GUI application that uses Qt.  
В каждом графическом приложении на Qt должен быть создан ровно один объект класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]. Этот объект управляет глобальными для приложения параметрами, такими как шрифт и форма курсора мыши по умолчанию.
[http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] manages various application-wide resources, such as the default font and cursor.


[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] is a GUI push button that the user can press and release.  
[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] — это обычная кнопка, которую пользователь может нажимать и отпускать.
It manages its own look and feel, like every other [http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget].
Этот класс сам занимается отрисовкой кнопки, как и любой другой класс, наследуемый от [http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget].
A widget is a user interface object that can process user input and draw graphics.  
Виджет (widget) — это объект в графическом интерфейсе, который может обрабатывать действия пользователя и отрисовывать себя на экране.  
The programmer can change both the overall look and feel and
Программист может менять всевозможные параметры виджета и его содержимое.
many minor properties of it (such as color), as well as the widget's content.
Например, [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] можно заставить показывать не только текст, но и значок ([http://doc.qt.nokia.com/latest/qicon.html Qt::Icon]).
A [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] can show either text or a [http://doc.qt.nokia.com/latest/qicon.html Qt::Icon].


=== Line by Line Walkthrough ===
=== Построчный обзор программы ===


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 56: Line 49:
</syntaxhighlight>
</syntaxhighlight>


This line loads the QtRuby extension.
Эта строка загружает библиотеку QtRuby.


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 62: Line 55:
</syntaxhighlight>
</syntaxhighlight>


'''<tt>app</tt>''' is this program's [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] instance. It is created here.  
'''<tt>app</tt>''' — объект [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] в нашей программе. В этой строке он создаётся.  
We pass '''<tt>ARGV</tt>''' to the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] constructor
Аргумент '''<tt>ARGV</tt>''' передаётся в конструктор класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] для того, чтобы он мог узнать интересующие Qt аргументы командной строки, переданные в программу (например, аргумент '''<tt>-display</tt>''' при использовании X11).  
so that it can process certain standard command-line arguments (such as '''<tt>-display</tt>''' under X11).  
Все аргументы командной строки, которые используются Qt, удаляются из массива '''<tt>ARGV</tt>'''.  
All command-line arguments recognized by Qt are removed from '''<tt>ARGV</tt>'''.  


<strong>Note:</strong> It is essential that the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] object be created before any window-system parts of Qt are used.
<strong>Замечание:</strong> Важно то, что объект класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] создаётся до создания окон при помощи Qt.


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 73: Line 65:
</syntaxhighlight>
</syntaxhighlight>


Here, after the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application], comes the first window-system code: A push button is created.
Здесь создаётся кнопка.


The button is set up to display the text "Hello world!".  
Эта кнопка будет показывать текст "Hello world!".  
Because we don't specify a parent window (as second argument to the
Поскольку мы не задали родительское окно для кнопки (это был бы второй аргумент конструктора класса [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton]), кнопка появится в отдельном окне со своей рамкой и заголовком окна.
[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] constructor),  
the button will be a window of its own, with its own window frame and title bar.


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 84: Line 74:
</syntaxhighlight>
</syntaxhighlight>


The button is set up to be 100 pixels wide and 30 pixels high
Задаются размеры кнопки: ширина — 100 пикселов, высота — 30 пикселов (не включая рамку окна).  
(excluding the window frame, which is provided by the windowing system).  
Можно было бы ещё задать положение окна на экране вызовом [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()].
We could call [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()] to assign a specific screen position to the widget,
but instead we let the windowing system choose a position.


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 93: Line 81:
</syntaxhighlight>
</syntaxhighlight>


A widget is never visible when you create it. You must call [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] to make it visible.
При создании, виджет не появляется на экране. Чтобы он стал видимым, нужно вызвать [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()].


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 99: Line 87:
</syntaxhighlight>
</syntaxhighlight>


This is where our program passes control to Qt.  
Здесь программа передаёт управление Qt.  
[http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] will return when the application exits.  
Вызов [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] завершается при завершении работы программы.  
([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] is [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]'s base class.  
([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] — это базовый класс класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application].  
It implements [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]'s core, non-GUI functionality and can be used when developing non-GUI applications.)
Он реализует базовые возможности [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application], без возможности работы с графическим интерфейсом. Его можно использовать при написании приложений без графического интерфейса.)


In [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()], Qt receives and processes user and system events and passes these on to the appropriate widgets.
В вызове [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()], Qt обрабатывает действия пользователя и системные события и сообщает о них соответствующим виджетам.


You should now try to run this program.
Теперь запустите программу.


=== Running the Application ===
=== Запуск приложения ===


When you run the application, you will see a small window filled with a single button, and on it you can read the famous words: "Hello world!"
После запуска приложения вы увидите небольшое окно с одной кнопкой.


=== Exercises ===
=== Упражнения ===


Try to resize the window. Click the button. If you're running X11,  
Попробуйте изменить размер окна. Нажмите кнопку. Если вы используете X11 (например, если вы используете GNU/Linux), попробуйте запустить программу с аргументом '''<tt>-geometry</tt>''' (например, '''<tt>-geometry 100x200+10+20</tt>''').
try running the program with the '''<tt>-geometry</tt>''' option (for example, '''<tt>-geometry 100x200+10+20</tt>''').


[[Category:Ruby]]
[[Category:Ruby/ru]]

Latest revision as of 12:32, 13 July 2012

Other languages:
Здравствуй, мир!
Серия примеров   Введение в программирование на Qt®4 на языке Ruby
Необходимо знать   Ruby
Следующий пример   Пример 2: Выход по нажатию
Литература   нет

Здравствуй, мир!

Файлы:

Обзор

Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знания, необходимые для написания работоспособного приложения на Qt. Выше приведён снимок экрана программы.

Исходный код приложения:

require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

app.exec()

Введение

Главный файл в приложении на QtRuby обычно занимается только инициализацией, после чего передаёт управление библиотеке Qt, которая потом сообщает программе о действиях пользователя через события.

В каждом графическом приложении на Qt должен быть создан ровно один объект класса Qt::Application. Этот объект управляет глобальными для приложения параметрами, такими как шрифт и форма курсора мыши по умолчанию.

Qt::PushButton — это обычная кнопка, которую пользователь может нажимать и отпускать. Этот класс сам занимается отрисовкой кнопки, как и любой другой класс, наследуемый от Qt::Widget. Виджет (widget) — это объект в графическом интерфейсе, который может обрабатывать действия пользователя и отрисовывать себя на экране. Программист может менять всевозможные параметры виджета и его содержимое. Например, Qt::PushButton можно заставить показывать не только текст, но и значок (Qt::Icon).

Построчный обзор программы

require 'Qt4'

Эта строка загружает библиотеку QtRuby.

app = Qt::Application.new(ARGV)

app — объект Qt::Application в нашей программе. В этой строке он создаётся. Аргумент ARGV передаётся в конструктор класса Qt::Application для того, чтобы он мог узнать интересующие Qt аргументы командной строки, переданные в программу (например, аргумент -display при использовании X11). Все аргументы командной строки, которые используются Qt, удаляются из массива ARGV.

Замечание: Важно то, что объект класса Qt::Application создаётся до создания окон при помощи Qt.

hello = Qt::PushButton.new('Hello World!')

Здесь создаётся кнопка.

Эта кнопка будет показывать текст "Hello world!". Поскольку мы не задали родительское окно для кнопки (это был бы второй аргумент конструктора класса Qt::PushButton), кнопка появится в отдельном окне со своей рамкой и заголовком окна.

hello.resize(100, 30)

Задаются размеры кнопки: ширина — 100 пикселов, высота — 30 пикселов (не включая рамку окна). Можно было бы ещё задать положение окна на экране вызовом Qt::Widget::move().

hello.show()

При создании, виджет не появляется на экране. Чтобы он стал видимым, нужно вызвать Qt::Widget::show().

app.exec()

Здесь программа передаёт управление Qt. Вызов Qt::CoreApplication::exec() завершается при завершении работы программы. (Qt::CoreApplication — это базовый класс класса Qt::Application. Он реализует базовые возможности Qt::Application, без возможности работы с графическим интерфейсом. Его можно использовать при написании приложений без графического интерфейса.)

В вызове Qt::CoreApplication::exec(), Qt обрабатывает действия пользователя и системные события и сообщает о них соответствующим виджетам.

Теперь запустите программу.

Запуск приложения

После запуска приложения вы увидите небольшое окно с одной кнопкой.

Упражнения

Попробуйте изменить размер окна. Нажмите кнопку. Если вы используете X11 (например, если вы используете GNU/Linux), попробуйте запустить программу с аргументом -geometry (например, -geometry 100x200+10+20).