Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01/ru: Difference between revisions
Aspotashev (talk | contribs) (Created page with "Разработка/Руководства/Введение в Qt4 на Ruby/Глава 1") |
(Updating to match new version of source page) |
||
(30 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
{{ | {{TutorialBrowser/ru| | ||
series=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial|Введение в программирование на Qt<sup>®</sup>4 на языке Ruby]]| | |||
name=Здравствуй, мир!| | |||
series=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial| | |||
name= | |||
pre=[http://www.ruby-lang.org Ruby]| | pre=[http://www.ruby-lang.org Ruby]| | ||
next=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_2| | next=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_2|Пример 2: Выход по нажатию]] | ||
}} | }} | ||
== | == Здравствуй, мир! == | ||
[[Image:Qt4_Ruby_Tutorial_Screenshot_1.png|center]] | [[Image:Qt4_Ruby_Tutorial_Screenshot_1.png|center]] | ||
Файлы: | |||
* [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] | ||
=== | === Обзор === | ||
Этот первый пример — программа «Hello world!» («Здравствуй, мир!»). Здесь содержатся минимальные знания, необходимые для написания работоспособного приложения на Qt. Выше приведён снимок экрана программы. | |||
Исходный код приложения: | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 35: | Line 31: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Введение === | ||
Главный файл в приложении на QtRuby обычно занимается только инициализацией, после чего передаёт управление библиотеке Qt, которая потом сообщает программе о действиях пользователя через события. | |||
В каждом графическом приложении на Qt должен быть создан ровно один объект класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]. Этот объект управляет глобальными для приложения параметрами, такими как шрифт и форма курсора мыши по умолчанию. | |||
[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] | [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] — это обычная кнопка, которую пользователь может нажимать и отпускать. | ||
Этот класс сам занимается отрисовкой кнопки, как и любой другой класс, наследуемый от [http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget]. | |||
Виджет (widget) — это объект в графическом интерфейсе, который может обрабатывать действия пользователя и отрисовывать себя на экране. | |||
Программист может менять всевозможные параметры виджета и его содержимое. | |||
Например, [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] можно заставить показывать не только текст, но и значок ([http://doc.qt.nokia.com/latest/qicon.html Qt::Icon]). | |||
=== | === Построчный обзор программы === | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 56: | Line 49: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Эта строка загружает библиотеку QtRuby. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 62: | Line 55: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''<tt>app</tt>''' | '''<tt>app</tt>''' — объект [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] в нашей программе. В этой строке он создаётся. | ||
Аргумент '''<tt>ARGV</tt>''' передаётся в конструктор класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] для того, чтобы он мог узнать интересующие Qt аргументы командной строки, переданные в программу (например, аргумент '''<tt>-display</tt>''' при использовании X11). | |||
Все аргументы командной строки, которые используются Qt, удаляются из массива '''<tt>ARGV</tt>'''. | |||
<strong> | <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> | ||
Здесь создаётся кнопка. | |||
Эта кнопка будет показывать текст "Hello world!". | |||
Поскольку мы не задали родительское окно для кнопки (это был бы второй аргумент конструктора класса [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton]), кнопка появится в отдельном окне со своей рамкой и заголовком окна. | |||
[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 84: | Line 74: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Задаются размеры кнопки: ширина — 100 пикселов, высота — 30 пикселов (не включая рамку окна). | |||
( | Можно было бы ещё задать положение окна на экране вызовом [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()]. | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 93: | Line 81: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
При создании, виджет не появляется на экране. Чтобы он стал видимым, нужно вызвать [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()]. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 99: | Line 87: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Здесь программа передаёт управление Qt. | |||
[http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] | Вызов [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] завершается при завершении работы программы. | ||
([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] | ([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] — это базовый класс класса [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]. | ||
Он реализует базовые возможности [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application], без возможности работы с графическим интерфейсом. Его можно использовать при написании приложений без графического интерфейса.) | |||
В вызове [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()], Qt обрабатывает действия пользователя и системные события и сообщает о них соответствующим виджетам. | |||
Теперь запустите программу. | |||
=== | === Запуск приложения === | ||
После запуска приложения вы увидите небольшое окно с одной кнопкой. | |||
=== | === Упражнения === | ||
Попробуйте изменить размер окна. Нажмите кнопку. Если вы используете X11 (например, если вы используете GNU/Linux), попробуйте запустить программу с аргументом '''<tt>-geometry</tt>''' (например, '''<tt>-geometry 100x200+10+20</tt>'''). | |||
[[Category:Ruby]] | [[Category:Ruby/ru]] |
Latest revision as of 12:32, 13 July 2012
Серия примеров | Введение в программирование на 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).