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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{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 <QFont>
-
#include <QPushButton>
+
#include <QPushButton>
-
#include <QWidget>
+
#include <QWidget>
-
int main(int argc, char *argv[])
+
int main(int argc, char *argv[])
-
{
+
{
-
    QApplication app(argc, argv);
+
QApplication app(argc, argv);
-
    QWidget window;
+
QWidget window;
-
    window.resize(200, 120);
+
window.resize(200, 120);
-
    QPushButton quit("Quit", &amp;window);
+
QPushButton quit("Quit",&window);
-
    quit.setFont(QFont("Times", 18, QFont::Bold));
+
quit.setFont(QFont("Times", 18, QFont::Bold));
-
    quit.setGeometry(10, 40, 180, 40);
+
quit.setGeometry(10, 40, 180, 40);
-
    QObject::connect(&amp;quit, SIGNAL(clicked()), &amp;app, SLOT(quit()));
+
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
-
    window.show();
+
window.show();
-
    return app.exec();
+
return app.exec();
-
}</source> <div id="line-by-line-walkthrough"></div>
+
}</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

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",&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", &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