[Предыдущая: Часть 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]
|
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |