Разработка/Руководства/Введение в Qt4 на Ruby/Глава 1

From KDE TechBase
Revision as of 12:32, 13 July 2012 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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).