Qt:Документация 4.3.2/tutorial-t3

Материал из Wiki.crossplatform.ru

Версия от 10:41, 29 января 2009; Root (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
40px Внимание: Актуальная версия перевода документации находится здесь

__NOTOC__

Image:qt-logo.png

Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Image:trolltech-logo.png

[Предыдущая: Часть 2 ] [ Учебное пособие ] [Следующая: Часть 4 ]

Содержание

Урок 3 - Родственные связи

Файлы:

Файл:T3.png

Следующий пример продемонстирует нам создание родительского виджета и его потомков.

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

 #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", &amp;window);
     quit.setFont(QFont("Times", 18, QFont::Bold));
     quit.setGeometry(10, 40, 180, 40);
     QObject::connect(&amp;quit, SIGNAL(clicked()), &amp;app, SLOT(quit()));
 
     window.show();
     return app.exec();
 }

Строчка за строчкой

 #include <QWidget>

Мы добавляем определение класса < QWidget>, который является базовым классом всех виджетов.

     QWidget window;

В этой строчке мы просто создаем экземпляр объекта виджета. Класс QWidget является предком всех объектов пользовательского интерфейса. Виджет - это единица (юнит, атом) пользовательского интерфейса: получая данные от клавиатуры, мышки или какого нибудь события, он видоизменяет свое отображение на экране. Виджет может быть связан со своим родительским классом и виджетами, для которых он является родителем.

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

     window.resize(200, 120);

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

     QPushButton quit("Quit", &amp;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