summaryrefslogtreecommitdiffstats
path: root/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook
diff options
context:
space:
mode:
Diffstat (limited to 'tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook')
-rw-r--r--tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook42
1 files changed, 21 insertions, 21 deletions
diff --git a/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook b/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook
index 29987b7b73c..9a4f4528483 100644
--- a/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook
+++ b/tde-i18n-ru/docs/tdevelop/kde_app_devel/index.docbook
@@ -160,15 +160,15 @@ return a.exec();
</orderedlist>
</para>
<para>Второй объект нашей программы - кнопка, экземпляр класса <classname>QPushButton</classname>. Из двух доступных конструкторов экземпляров этого класса мы воспользовались вторым: он принимает в виде аргумента строку текста, которая будет показана на кнопке. Затем методом <methodname>resize()</methodname> мы изменяем размер кнопки, чтобы вся строка была видна на кнопке. </para>
-<para>Далее идёт метод <methodname>show()</methodname>. Но его нет в описании класса <classname>QPushButton</classname>. Этот класс наследует методы класса <classname>QButton</classname>, а тот, в свою очередь, наследует методы <classname>QWidget</classname>. Этот класс содержит огромное количество методов, в том числе <methodname>show()</methodname>. Итак, что же делалось с кнопкой: <orderedlist>
+<para>Далее идёт метод <methodname>show()</methodname>. Но его нет в описании класса <classname>QPushButton</classname>. Этот класс наследует методы класса <classname>QButton</classname>, а тот, в свою очередь, наследует методы <classname>TQWidget</classname>. Этот класс содержит огромное количество методов, в том числе <methodname>show()</methodname>. Итак, что же делалось с кнопкой: <orderedlist>
<listitem><para>Создаём экземпляр класса <classname>QPushButton</classname>, используя второй конструктор для указания надписи на кнопке</para></listitem>
<listitem><para>Изменяем размер кнопки</para></listitem>
<listitem><para>Делаем основным элементом управления для переменной а, экземпляра класса <classname>QApplication</classname></para></listitem>
-<listitem><para>Вызываем метод <methodname>show()</methodname>, который приводит к отображению элемента управления. Он наследуется от класса <classname>QWidget</classname></para></listitem>
+<listitem><para>Вызываем метод <methodname>show()</methodname>, который приводит к отображению элемента управления. Он наследуется от класса <classname>TQWidget</classname></para></listitem>
</orderedlist>
</para>
<para>После вызова метода <methodname>exec()</methodname>, приложение становится видимым пользователю. Окно приложения содержит кнопку "Hello world!". Примечание: GUI-программы ведут себя несколько отлично от процедурных. Главное отличие состоит в том, что приложение входит в т.н. "главный цикл событий" ("main event loop"). Это означает, что программа ожидает действий со стороны пользователя, и выдаёт на них определённую реакцию. Следующий раздел разъясняет, что это означает для программиста, и как эти события обрабатываются в Qt. </para>
-<note><para>Для опытных: кнопка не имеет родителя, это значит, что это элемент управления верхнего уровня (top-level) и выполняется в локальном цикле событий, которому не нужно ждать главного цикла событий. Подробно это объяснено в документации класса QWidget и The KDE Library Reference Guide</para>
+<note><para>Для опытных: кнопка не имеет родителя, это значит, что это элемент управления верхнего уровня (top-level) и выполняется в локальном цикле событий, которому не нужно ждать главного цикла событий. Подробно это объяснено в документации класса TQWidget и The KDE Library Reference Guide</para>
</note>
</sect3>
@@ -183,7 +183,7 @@ return a.exec();
</itemizedlist>
</para>
<para>Теперь оживим нашу программу добавлением обработчика событий. В общем, есть два способа взаимодействия пользователя с программой - клавиатурой и мышью. В обоих случаях графический интерфейс предоставляет механизмы регистрации новых событий от этих устройств и методы их обработки. </para>
-<para>Оконная система посылает все события соответствующему приложению. <classname>QApplication</classname> пересылает их активному окну в виде <classname>QEvent</classname> и элементы управления затем решают, что при этом делать. Соответствующий элемент управления принимает событие и обрабатывает <methodname>QWidget::event (QEvent*)</methodname>, в котором определяется тип события и выдаётся соответствующая реакция; <methodname>event()</methodname> - главный обработчик событий. Он передаёт событие т.н. фильтрам событий, которые определяют, что произошло и что делать с этим событием. Если фильтра для данного типа события нет, вызываются специальные обработчики событий. Они вызывают соответствующие предопределённые методы: <itemizedlist>
+<para>Оконная система посылает все события соответствующему приложению. <classname>QApplication</classname> пересылает их активному окну в виде <classname>QEvent</classname> и элементы управления затем решают, что при этом делать. Соответствующий элемент управления принимает событие и обрабатывает <methodname>TQWidget::event (QEvent*)</methodname>, в котором определяется тип события и выдаётся соответствующая реакция; <methodname>event()</methodname> - главный обработчик событий. Он передаёт событие т.н. фильтрам событий, которые определяют, что произошло и что делать с этим событием. Если фильтра для данного типа события нет, вызываются специальные обработчики событий. Они вызывают соответствующие предопределённые методы: <itemizedlist>
<listitem><para>События с клавиатуры - нажатие клавиш TAB и Shift-TAB:</para>
<itemizedlist>
<listitem><para><methodname>virtual void focusInEvent(QFocusEvent *)</methodname></para></listitem>
@@ -224,12 +224,12 @@ return a.exec();
</itemizedlist>
</para>
-<para>Помните, что все функции событий являются виртуальными и защищёнными. Вы можете переназначить события, нужные вам, и определить свою реакцию. <classname>QWidget</classname> также содержит некоторые виртуальные методы, которые могут пригодиться в ваших программах. В любом случае, класс <classname>QWidget</classname> нужно узнать получше. </para>
+<para>Помните, что все функции событий являются виртуальными и защищёнными. Вы можете переназначить события, нужные вам, и определить свою реакцию. <classname>TQWidget</classname> также содержит некоторые виртуальные методы, которые могут пригодиться в ваших программах. В любом случае, класс <classname>TQWidget</classname> нужно узнать получше. </para>
</sect2>
<sect2 id="c1s2s4">
<title>Взаимодействие объектов через сигналы и слоты</title>
<para>Теперь переходим к основному отличию Qt: механизму сигнал/слот. Это быстрое и удобное решение реализации взаимодействия объектов, которое обычно решается посредством callback-функций в библиотеках, работающих с X-Window. Так как такое взаимодействие требует аккуратного программирования и иногда делает создание пользовательского интерфейса очень сложным (что описано в документации по Qt и объяснено в книге К.Дальхеймера [K.Dalheimer] 'Programming with Qt'), Troll Tech придумала новую систему, где объекты могут посылать сигналы, которые можно связывать с методами, объявленными как слоты. Программисту на C++ нужно знать только некоторые вещи о механизме: <itemizedlist>
-<listitem><para>объявление класса, использующего сигналы/слот должно содержать макрос TQ_OBJECT в начале (без точки с запятой); и должно быть унаследовано от класса <classname>QObject</classname> </para></listitem>
+<listitem><para>объявление класса, использующего сигналы/слот должно содержать макрос TQ_OBJECT в начале (без точки с запятой); и должно быть унаследовано от класса <classname>TQObject</classname> </para></listitem>
<listitem><para>сигнал может быть послан ключевым словом emit (например, emit signal (параметры...)) из любого метода класса, поддерживающего сигналы/слоты </para></listitem>
<listitem><para>все сигналы, использующиеся не наследуемыми классами, должны быть добавлены в объявление класса в разделе signals </para></listitem>
@@ -237,9 +237,9 @@ return a.exec();
<listitem><para>компилятор метаобъектов (moc, meta-object compiler) обрабатывает заголовочные файлы, заменяя макросы на действительный код (это не обязательно знать). Вывод moc передаётся компилятору C++. </para></listitem>
</itemizedlist>
</para>
-<para>Другой способ использования сигналов без наследования от класса <classname>QObject</classname> - использовать класс <classname>QSignal</classname>: дополнительные сведения и примеры использования вы можете найти в документации. Далее подразумевается, что вы используете наследование от класса <classname>QObject</classname>. </para>
+<para>Другой способ использования сигналов без наследования от класса <classname>TQObject</classname> - использовать класс <classname>QSignal</classname>: дополнительные сведения и примеры использования вы можете найти в документации. Далее подразумевается, что вы используете наследование от класса <classname>TQObject</classname>. </para>
<para>В этом случае ваш класс может посылать сигналы куда угодно и создавать слоты, к которым можно привязывать любые сигналы. Используя сигналы, вам не нужно заботиться о том, кто их получает - нужно просто послать сигнал, а потом подключить любой слот, который будет выполнен при возникновении сигнала. Слоты можно использовать также как обычные методы в реализации. </para>
-<para>Теперь, чтобы соединить сигнал со слотом,воспользуйтесь методом <methodname>connect()</methodname> класса <classname>QObject</classname> или, если доступно, другими специальными методами объекта для создания привязки к соответствующему сигналу. </para>
+<para>Теперь, чтобы соединить сигнал со слотом,воспользуйтесь методом <methodname>connect()</methodname> класса <classname>TQObject</classname> или, если доступно, другими специальными методами объекта для создания привязки к соответствующему сигналу. </para>
<sect3 id="c1s2s4s1">
<title>Примерное использование</title>
@@ -255,16 +255,16 @@ hello.resize( 100, 30 );
a.setMainWidget( &amp;hello );
-QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
+TQObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
hello.show();
return a.exec();
}
</programlisting>
</para>
-<para>Как видите, мы лишь расширили возможности кнопки с использованием метода <methodname>connect()</methodname>: <methodname>connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ))</methodname> &mdash; всё, что мы добавили. Что же это означает? Объявление метода <methodname>connect()</methodname> в классе QObject: </para>
-<para><methodname>bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) </methodname></para>
-<para>Это значит, что указатель на экземпляр <classname>QObject</classname> является инициатором сигнала, указанного во втором аргументе. Оставшиеся два аргумента есть объект-приёмник, который имеет слот, а затем и имя функции-слота, которая будет выполнена при получении сигнала. </para>
+<para>Как видите, мы лишь расширили возможности кнопки с использованием метода <methodname>connect()</methodname>: <methodname>connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ))</methodname> &mdash; всё, что мы добавили. Что же это означает? Объявление метода <methodname>connect()</methodname> в классе TQObject: </para>
+<para><methodname>bool connect ( const TQObject * sender, const char * signal, const TQObject * receiver, const char * member ) </methodname></para>
+<para>Это значит, что указатель на экземпляр <classname>TQObject</classname> является инициатором сигнала, указанного во втором аргументе. Оставшиеся два аргумента есть объект-приёмник, который имеет слот, а затем и имя функции-слота, которая будет выполнена при получении сигнала. </para>
<para>С помощью сигналов и слотов, объекты ваших программ могут взаимодействовать друг с другом без явной зависимости от типа объекта-приёмника. Далее в этом руководстве приводится более подробное описание работы механзима сигналов/слотов. Коме этого, о нём можно почитать в <ulink url="developer.kde.org/documentation/library/libraryref.html">The KDE Library Reference Guide</ulink> и <ulink url="doc.trolltech.com">Qt online reference</ulink>. </para>
</sect3>
</sect2>
@@ -304,7 +304,7 @@ hello.resize( 100, 30 );
a.setTopWidget( &amp;hello );
-QObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
+TQObject::connect(&amp;hello, SIGNAL( clicked() ), &amp;a, SLOT( quit() ));
hello.show();
return a.exec();
@@ -313,7 +313,7 @@ return a.exec();
</para>
<para>Вы видите, что мы поменяли класс <classname>QApplication</classname> на <classname>TDEApplication</classname>. Затем мы использовали метод <methodname>setTopWidget</methodname> вместо <methodname>setMainWidget()</methodname> для указания главного элемента управления для <classname>TDEApplication</classname>. Всё! Ваше первое приложение KDE готово - осталось только указать путь к заголовочным файлам KDE и скомпоновать библиотеку tdecore ключом компоновщика -ltdecore. </para>
<para>Если вы не собираетесь создавать такие простые программы, вам понадобится более удобная среда написания ПО. В следующей главе речь пойдёт о &tdevelop;. </para>
-<para>Итак, к этому времени, вы уже прошлись по страницам справочной документации Qt, в т.ч. по классам <classname>QApplication</classname>, <classname>QWidget</classname> и <classname>QObject</classname>, а также по документации библиотеки tdecore, классу <classname>TDEApplication</classname>. <ulink url="developer.kde.org/documentation/library/libraryref.html">KDE Library Reference handbook</ulink> содержит полное описание использования конструкторов <classname>QApplication</classname> и <classname>TDEApplication</classname>, включая также обработку ключей командной строки. </para>
+<para>Итак, к этому времени, вы уже прошлись по страницам справочной документации Qt, в т.ч. по классам <classname>QApplication</classname>, <classname>TQWidget</classname> и <classname>TQObject</classname>, а также по документации библиотеки tdecore, классу <classname>TDEApplication</classname>. <ulink url="developer.kde.org/documentation/library/libraryref.html">KDE Library Reference handbook</ulink> содержит полное описание использования конструкторов <classname>QApplication</classname> и <classname>TDEApplication</classname>, включая также обработку ключей командной строки. </para>
</sect2>
</sect1>
@@ -549,10 +549,10 @@ return a.exec();
16 statusBar()->show();
17
18 // allow the view to change the statusbar and caption
-19 connect(m_view, SIGNAL(signalChangeStatusbar(const QString&amp;)),
-20 this, SLOT(changeStatusbar(const QString&amp;)));
-21 connect(m_view, SIGNAL(signalChangeCaption(const QString&amp;)),
-22 this, SLOT(changeCaption(const QString&amp;)));
+19 connect(m_view, SIGNAL(signalChangeStatusbar(const TQString&amp;)),
+20 this, SLOT(changeStatusbar(const TQString&amp;)));
+21 connect(m_view, SIGNAL(signalChangeCaption(const TQString&amp;)),
+22 this, SLOT(changeCaption(const TQString&amp;)));
23
24 }
</programlisting>
@@ -584,7 +584,7 @@ return a.exec();
</itemizedlist>
</para>
<para>Излишним будет говорить, что стабильность - самая главная цель. Никто не может 100% избежать ошибок ("bugs"), но разумное проектирование позволяет значительно уменьшить количество возможных недоработок. Программирование на C++, если вы знаете как использовать его лучшие стороны - наследовательность, скрытие информации (модульность) и повторное использование одного кода, безусловно принесёт вам успех. </para>
-<para>При создании проекта KDE или Qt, его представление (view) всегда наследует QWidget, либо напрямую, либо через другие элементы управления библиотек. Мастер приложений также создёт код, содержащий класс yourappView, наследователь QWidget. </para>
+<para>При создании проекта KDE или Qt, его представление (view) всегда наследует TQWidget, либо напрямую, либо через другие элементы управления библиотек. Мастер приложений также создёт код, содержащий класс yourappView, наследователь TQWidget. </para>
<para>В этой главе мы опишем как использовать элементы управления библиотек для создания новыхпредставлений, потом будет обзор готовых представлений, которые они уже содержат. </para>
</sect1>
<sect1 id="c4s2">
@@ -601,7 +601,7 @@ return a.exec();
<para>На первой странице документации Qt вы можете найти ссылку на "Widget Screenshots", чтобы выбрать нужный. Они уже готовы к использованию, и их можно совмещать. Далее, мы обсудим некоторые из них, но помните, что библиотеки KDE могут содержать свои (доработанные) элементы управления, предназначенные для тех же задач. </para>
<para>Вот несколько компонентов Qt и их назначения: <orderedlist>
<listitem><para>Если в области вашего представления не хватает свободного места, пользователь должен перемещаться по документу с помощью полос прокрутки. Для этого, в Qt есть класс <classname>QScrollView</classname>. Вы можете сделать свой элемент управления наследником <classname>QScrollView</classname> или использовать его экземпляр для управления представлением. </para></listitem>
-<listitem><para>Для создания ScrollView, унаследуйте виджет-представление от <classname>QWidget</classname> и и добавьте вертикальные и горизонтальные полосы прокрутки <classname>QScrollBars </classname> (так делается в TDEHTMLView). </para></listitem>
+<listitem><para>Для создания ScrollView, унаследуйте виджет-представление от <classname>TQWidget</classname> и и добавьте вертикальные и горизонтальные полосы прокрутки <classname>QScrollBars </classname> (так делается в TDEHTMLView). </para></listitem>
<listitem><para>Для обработки текста, пвоспользуйтесь <classname>QTextEdit</classname>. Этот класс предоставляет законченный виджет текстового редактора, который уже поддерживает операции с буфером обмена, а также управляется полосами прокрутки scrollview. </para></listitem>
<listitem><para>Воспользуйтесь <classname>QTable</classname> для отображения данных, организованных в таблицу. <classname>QTable</classname> также управляется полосами прокрутки. </para></listitem>
<listitem><para>Для отображения двух различных виджетов или двух экземпляров одного виджета одновременно, воспользуйтесь <classname>QSplitter </classname>. Он позволяет разделить представления горизонтально или вертикально. Его использует KMail и KBabel. </para></listitem>
@@ -696,7 +696,7 @@ return a.exec();
<sect1 id="c8s4">
<title>Кнопка <guibutton>Что это?</guibutton></title>
<para>Подсказка <guibutton>Что это?</guibutton> должна содержать кратку справку (абзац-два) по выбраному элементу. Сама кнопка <guibutton>Что это?</guibutton> обычно располагается либо в меню, либо на панели инструментов, либо в загаловке окна. После нажатия на ней, пользователь должен нажать на нужной объекте. </para>
-<para>Для добавления такой справки, воспользуйтесь статическим методом <methodname>QWhatsThis::add(QWidget *widget, const QString &amp;text)</methodname> </para>
+<para>Для добавления такой справки, воспользуйтесь статическим методом <methodname>QWhatsThis::add(TQWidget *widget, const TQString &amp;text)</methodname> </para>
</sect1>
</chapter>