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

From KDE TechBase
(Created page with "Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знани...")
(Updating to match new version of source page)
 
(22 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 19: Line 17:
Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знания, необходимые для написания работоспособного приложения на Qt. Выше приведён снимок экрана программы.
Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знания, необходимые для написания работоспособного приложения на Qt. Выше приведён снимок экрана программы.


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


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 33: 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 54: Line 49:
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Line 60: 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 71: 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 82: 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 91: 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 97: 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).