![]() |
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции | ![]() |
[Предыдущий: Урок 2] [Учебное пособие] [Следующий: Урок 4]
Файлы:
Следующий пример продемонстрирует нам создание родительского виджета и его потомков.
Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком.
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ****************************************************************************/ #include <QApplication> #include <QFont> #include <QPushButton> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(200, 120); QPushButton quit("Quit", &window); quit.setFont(QFont("Times", 18, QFont::Bold)); quit.setGeometry(10, 40, 180, 40); QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit())); window.show(); return app.exec(); }
#include <QWidget>
Мы добавили подключение определения класса <QWidget>, который является базовым классом всех виджетов.
QWidget window;
В этой строчке мы просто создаем экземпляр объекта виджета. Класс QWidget является базовым классом для всех объектов пользовательского интерфейса. Виджет - это элементарный объект пользовательского интерфейса: Он получает данные от клавиатуры, мышки и другие события от оконной системы и рисует свое изображение на экране. Виджет ограничен своим родителем и другими виджетами, расположенными перед ним.
Виджет, который не встроен в родительский виджет, как например в нашем случае, называют окном. Обычно, окна имеют собственную рамку и эмблему для входа через панель задач, обеспечиваемые системой окна. Виджет без родительского окна - всегда независимое окно. Его расположением на экране при старте управляет оконная система.
window.resize(200, 120);
В этой строчке мы устанавливаем ширину окна равной 200 пикселям и высоту равной 120 пикселям.
QPushButton quit("Quit", &window);
Ребёнок родился. Этот экземпляр объекта QPushButton создается с родительским виджетом (window). Виджет, который является потомком другого виджета, всегда отображается в пределах окна родительского виджета. При отображении на экране он ограничен границами родительского виджета. По умолчанию, если не задать местоположение виджета, он будет размещен в верхнем левом углу родительского виджета с координатами (0, 0).
quit.setGeometry(10, 40, 180, 40);
Функция QWidget::setGeometry() принимает 4 параметра: Первые два параметра - это координаты x и y верхнего левого угла. Координаты указываются относительно родительского виджета. Последние два параметра - ширина и высота кнопки. Результатом этой команды будет кнопка, левый верхний угол которой расположен в точке (10, 40) а правый нижний угол - в точке (190, 80).
window.show();
Когда родительский виджет становится видимым, это делает видимыми и все его дочерние виджеты (за исключением тех, которые с использованием метода QWidget::hide() будут скрыты явно).
Кнопка не будет теперь заполнять все окно. Вместо этого верхний левый угол кнопки будет располагаться внутри окна в точке (10, 40) и иметь размеры по ширине 180 и по высоте 40, которые мы установили при вызове метода QWidget::setGeometry().
Попробуйте изменить размер окна. Что при этом произойдет с кнопкой? Что произойдет с высотой кнопки, если вы увеличите размер шрифта на кнопке? Что произойдет, если сильно уменьшить размер окна?
[Предыдущий: Урок 2] [Учебное пособие] [Следующий: Урок 4]
Copyright © 2008 Trolltech | Торговые марки | Qt 4.3.5 |