Qt:Документация 4.3.2/tutorial-t3
Материал из Wiki.crossplatform.ru
Root (Обсуждение | вклад) (Новая: {{Qt4.3.2_header}} [Предыдущая: Часть 2 ] [ [[Qt:Документация 4.3.2/tutorial | Учебное пособ...) |
(→Урок 3 - Родственные связи) |
||
Строка 14: | Строка 14: | ||
Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком. | Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком. | ||
- | <source lang="cpp-qt"> #include <QApplication> | + | <source lang="cpp-qt">#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(); | |
- | + | }</source> <div id="line-by-line-walkthrough"></div> | |
==Строчка за строчкой== | ==Строчка за строчкой== | ||
<source lang="cpp-qt"> #include <QWidget></source> | <source lang="cpp-qt"> #include <QWidget></source> |
Текущая версия на 18:09, 12 марта 2009
Внимание: Актуальная версия перевода документации находится здесь |
__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
|