http://www.wiki.crossplatform.ru/index.php?title=Qt:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_4.3.2/tutorial-t3&feed=atom&action=historyQt:Документация 4.3.2/tutorial-t3 - История изменений2024-03-29T00:17:03ZИстория изменений этой страницы в викиMediaWiki 1.15.1http://www.wiki.crossplatform.ru/index.php?title=Qt:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_4.3.2/tutorial-t3&diff=6567&oldid=prev94.179.229.27: /* Урок 3 - Родственные связи */2009-03-12T18:09:10Z<p><span class="autocomment">Урок 3 - Родственные связи</span></p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Предыдущая</td>
<td colspan='2' style="background-color: white; color:black;">Версия 18:09, 12 марта 2009</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Строка 14:</td>
<td colspan="2" class="diff-lineno">Строка 14:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком.</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><source lang="cpp-qt"> #include <QApplication></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><source lang="cpp-qt">#include <QApplication></div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>#include <QFont></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>#include <QFont></div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>#include <QPushButton></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>#include <QPushButton></div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>#include <QWidget></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>#include <QWidget></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>int main(int argc, char *argv[])</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>int main(int argc, char *argv[])</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>{</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>{</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>QApplication app(argc, argv);</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>QApplication app(argc, argv);</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>QWidget window;</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>QWidget window;</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>window.resize(200, 120);</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>window.resize(200, 120);</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>QPushButton quit("Quit", &<del class="diffchange diffchange-inline">amp;</del>window);</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>QPushButton quit("Quit",&window);</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>quit.setFont(QFont("Times", 18, QFont::Bold));</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>quit.setFont(QFont("Times", 18, QFont::Bold));</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>quit.setGeometry(10, 40, 180, 40);</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>quit.setGeometry(10, 40, 180, 40);</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>QObject::connect(&<del class="diffchange diffchange-inline">amp;</del>quit, SIGNAL(clicked()), &<del class="diffchange diffchange-inline">amp;</del>app, SLOT(quit()));</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>window.show();</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>window.show();</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>return app.exec();</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>return app.exec();</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline"> </del>}</source> <div id="line-by-line-walkthrough"></div></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>}</source> <div id="line-by-line-walkthrough"></div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>==Строчка за строчкой==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>==Строчка за строчкой==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><source lang="cpp-qt"> #include <QWidget></source> </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><source lang="cpp-qt"> #include <QWidget></source> </div></td></tr>
<!-- diff generator: internal 2024-03-29 00:17:04 -->
</table>94.179.229.27http://www.wiki.crossplatform.ru/index.php?title=Qt:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_4.3.2/tutorial-t3&diff=5019&oldid=prevRoot: Новая: {{Qt4.3.2_header}} [Предыдущая: Часть 2 ] [ [[Qt:Документация 4.3.2/tutorial | Учебное пособ...2009-01-29T10:41:35Z<p>Новая: {{Qt4.3.2_header}} [Предыдущая: <a href="/index.php/Qt:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_4.3.2/tutorial-t2" title="Qt:Документация 4.3.2/tutorial-t2"> Часть 2</a> ] [ [[Qt:Документация 4.3.2/tutorial | Учебное пособ...</p>
<p><b>Новая страница</b></p><div>{{Qt4.3.2_header}}<br />
<br />
[Предыдущая: [[Qt:Документация 4.3.2/tutorial-t2 | Часть 2]] ] [ [[Qt:Документация 4.3.2/tutorial | Учебное пособие]] ] [Следующая: [[Qt:Документация 4.3.2/tutorial-t4 | Часть 4]] ] <br />
<br />
=Урок 3 - Родственные связи<br />=<br />
<br />
Файлы:<br />
<br />
*[[Qt:Документация 4.3.2/tutorial-t3-main-cpp | tutorial/t3/main.cpp]]<br />
<br />
[[Image:t3.png|center]]<br />
<br />
Следующий пример продемонстирует нам создание родительского виджета и его потомков.<br />
<br />
Мы создадим простой пример и рассмотрим создание одного родительского виджета с единственным потомком.<br />
<source lang="cpp-qt"> #include <QApplication><br />
#include <QFont><br />
#include <QPushButton><br />
#include <QWidget><br />
<br />
int main(int argc, char *argv[])<br />
{<br />
QApplication app(argc, argv);<br />
<br />
QWidget window;<br />
window.resize(200, 120);<br />
<br />
QPushButton quit("Quit", &amp;window);<br />
quit.setFont(QFont("Times", 18, QFont::Bold));<br />
quit.setGeometry(10, 40, 180, 40);<br />
QObject::connect(&amp;quit, SIGNAL(clicked()), &amp;app, SLOT(quit()));<br />
<br />
window.show();<br />
return app.exec();<br />
}</source> <div id="line-by-line-walkthrough"></div><br />
==Строчка за строчкой==<br />
<source lang="cpp-qt"> #include <QWidget></source> <br />
Мы добавляем определение класса <[[Qt:Документация 4.3.2/qwidget | QWidget]]>, который является базовым классом всех виджетов.<br />
<source lang="cpp-qt"> QWidget window;</source> <br />
В этой строчке мы просто создаем экземпляр объекта виджета. Класс [[Qt:Документация 4.3.2/qwidget | QWidget]] является предком всех объектов пользовательского интерфейса. Виджет - это единица (юнит, атом) пользовательского интерфейса: получая данные от клавиатуры, мышки или какого нибудь события, он видоизменяет свое отображение на экране. Виджет может быть связан со своим родительским классом и виджетами, для которых он является родителем.<br />
<br />
Виджет, чей родитель не является виджетом (как например в нашем случае), называют окном. Обычно, окна имеют собственную рамку и эмблему для входа через панель задач, обеспечиваемые системой окна. Виджет без родительского окна - всегда независимое окно. Его позицией на экране при старте управляет оконная система.<br />
<source lang="cpp-qt"> window.resize(200, 120);</source> <br />
В этой строчке мы устанавливаем размер окна, 200 пикселей ширина и 120 пикселей высота.<br />
<source lang="cpp-qt"> QPushButton quit("Quit", &amp;window);</source> <br />
Ребёнок родился. Этот экземпляр объекта [[Qt:Документация 4.3.2/qpushbutton | QPushButton]]создается как потомок виджета (<tt>window</tt>). Виджет, который является потомком другого виджета, всегда отображается в пределах окна родительского виджета. Его перемещение ограничено границами родительского окна. Если не задать местоположение виджета, то он будет размещен на позиции (0,0).<br />
<source lang="cpp-qt"> quit.setGeometry(10, 40, 180, 40);</source> <br />
В метод [[Qt:Документация 4.3.2/qwidget#geometry-prop | QWidget::setGeometry]]()передается 4 параметра, первый два это координаты X и Y положения верхней левой границы. Это координаты, которые высчитываются относительно родительского виджета. Следующие параметры являются шириной и высотой виджета. Результатом этой команды будет кнопка, которая имеет координаты верхнего левого окна относительного родительского окна (10,40) и иметь ширину 180 и высоту 40.<br />
<source lang="cpp-qt"> window.show();</source> <br />
Когда родительскому виджету указывают стать видимым, это также влияет и на все его потомственные виджеты (за исключением тех, которые явно будут указаны что они не отображаются, используя метод [[Qt:Документация 4.3.2/qwidget#hide | QWidget::hide]]()).<br />
<div id="running-the-application"></div><br />
==Запуск приложения==<br />
<br />
При запуске этого приложения, у Вас откроется окно, в котором на этот раз кнопка не будет заполнять все окно. Верхний левый угол кнопки будет располагаться на позиции (10,40) и иметь размеры по ширине 180 и по высоте 40, которые мы установили при вызове метода [[Qt:Документация 4.3.2/qwidget#geometry-prop | QWidget::setGeometry]]().<br />
<div id="exercises"></div><br />
==Домашнее задание==<br />
<br />
Попробуйте изменить размер окна. Что при этом произойдет с кнопкой? Что произойдет с кнопкой, если вы увеличите размер шрифта на кнопке? Что произойдет если уменьшить размер окна до минимума?<br />
<br />
[Предыдущая: [[Qt:Документация 4.3.2/tutorial-t2 | Часть 2]] ] [ [[Qt:Документация 4.3.2/tutorial | Учебное пособие]] ] [Следующая: [[Qt:Документация 4.3.2/tutorial-t4 | Часть 4]] ] <br />
<br />
<br />
{{Qt4.3.2_footer}}</div>Root