Qt:Документация 4.3.2/tutorial-t3
Материал из Wiki.crossplatform.ru
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[Предыдущая: Часть 2 ] [ Учебное пособие ] [Следующая: Часть 4 ]
Содержание |
Урок 3 - Родственные связи
Файлы:
Следующий пример продемонстирует нам создание родительского виджета и его потомков.
Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком.
#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) и иметь ширину 180 и высоту 40.
window.show();
Когда родительскому виджету указывают стать видимым, это также влияет и на все его потомственные виджеты (за исключением тех, которые явно будут указаны что они не отображаются, используя метод QWidget::hide()).
Запуск приложения
При запуске этого приложения, у Вас откроется окно, в котором на этот раз кнопка не будет заполнять все окно. Верхний левый угол кнопки будет располагаться на позиции (10,40) и иметь размеры по ширине 180 и по высоте 40, которые мы установили при вызове метода QWidget::setGeometry().
Домашнее задание
Попробуйте изменить размер окна. Что при этом произойдет с кнопкой? Что произойдет с кнопкой, если вы увеличите размер шрифта на кнопке? Что произойдет если уменьшить размер окна до минимума?
[Предыдущая: Часть 2 ] [ Учебное пособие ] [Следующая: Часть 4 ]
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|