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

From KDE TechBase
(Created page with "Кнопка уже не занимает всё окно, теперь она расположена в координатах (10, 40) и имеет размер (180, 40). Э...")
(Created page with "=== Упражнения ===")
Line 76: Line 76:
Кнопка уже не занимает всё окно, теперь она расположена в координатах (10, 40) и имеет размер (180, 40). Это было достигнуто вызовом [http://doc.qt.nokia.com/latest/qwidget.html#geometry-prop Qt::Widget::setGeometry()].
Кнопка уже не занимает всё окно, теперь она расположена в координатах (10, 40) и имеет размер (180, 40). Это было достигнуто вызовом [http://doc.qt.nokia.com/latest/qwidget.html#geometry-prop Qt::Widget::setGeometry()].


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


Try resizing the window. How does the button change? What happens to the button's height if you run the program with a bigger font? What happens if you try to make the window really small?
Try resizing the window. How does the button change? What happens to the button's height if you run the program with a bigger font? What happens if you try to make the window really small?


[[Category:Ruby]]
[[Category:Ruby]]

Revision as of 17:07, 2 July 2011

Other languages:


Development/Tutorials/Qt4 Ruby Tutorial/Chapter 3


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

Иерархия виджетов

Файлы:

Обзор

Этот пример показывает, как можно создать родительский и дочерний виджеты.

Мы максимально упростим задачу и создадим единственный родительский виджет и только один дочерний ему виджет.

require 'Qt4'

app = Qt::Application.new(ARGV)

window = Qt::Widget.new()
window.resize(200, 120)

quit = Qt::PushButton.new('Quit', window)
quit.font = Qt::Font.new('Times', 18, Qt::Font::Bold)
quit.setGeometry(10, 40, 180, 40)
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))

window.show()
app.exec()

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

window = Qt::Widget.new()

Здесь мы создаём объект простого виджета. Qt::Widget — базовый класс для всех объектов интерфейса пользователя. Виджет — это неделимая единица интерфейса. Он получает события от оконной системы при использовании мыши, клавиатуры и других действиях, а также рисует себя на экране. Область виджета на экране может быть обрезана родительским виджетом или перекрыта виджетами, расположенными поверх него.

Виджет, который не встроен в родительский виджет (как в нашем примере) называется окном. Обычно окна имеют рамку и соответствующий элемент в панели задач, которые создаются оконной системой. Виджет, не имеющий родительского виджета, всегда является свободным окном. Его исходное положение на экране выбирается оконной системой.

window.resize(200, 120)

Мы устанавливаем ширину окна равной 200 пикселам, а высоту равной 120 пикселам.

quit = Qt::PushButton.new('Quit', window)

Создание дочернего виджета. При создании объекта Qt::PushButton в качестве родительского виджет выбирается window. Дочерний виджет всегда показывается внутри родительского, если что-то не умещается в границы родительского виджета, это обрезается. По умолчанию дочерний виджет расположен в левом верхнем углу родительского и имеет относительные координаты (0, 0).

quit.setGeometry(10, 40, 180, 40)

Метод Qt::Widget::setGeometry() принимает 4 аргумента: первые 2 аргумента — координаты левого верхнего угла кнопки относительно родительского окна, другие 2 аргумента — ширина и высота кнопки соответственно. В результате такого вызова мы получаем кнопку, занимающую прямоугольник с углами в точках (10, 40) и (190, 80).

window.show()

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

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

Кнопка уже не занимает всё окно, теперь она расположена в координатах (10, 40) и имеет размер (180, 40). Это было достигнуто вызовом Qt::Widget::setGeometry().

Упражнения

Try resizing the window. How does the button change? What happens to the button's height if you run the program with a bigger font? What happens if you try to make the window really small?