Версия для печати

Архив документации на OpenNet.ru / Раздел "Программирование, языки" (Многостраничная версия)

 

Рабочая среда KDE

Qt Designer и KDevelop-3.0 для начинающих

 

  Далее

Qt Designer и KDevelop-3.0 для начинающих

Автор: Anne-Marie Mahfouf <annma at kde org>
Перевод: Марина Соболева <marina_soboleva at inbox ru> (комментарии и исправления в переводе приветствуются :)
Оригинал перевода: women.kde.org


Версия 0.4

Copyright © 2001, 2003 Anne-Marie Mahfouf

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Qt — это набор инструментов для разработки приложений с графическим интерфейсом, используемый проектом KDE. В этом документе описывается, как новичок может создать простое приложение, используя Qt Designer 3.2 и KDevelop-3.0 (эту программу также называют Gideon).

От переводчика: на момент написания этого перевода лишь малая часть интерфейса KDevelop была на русском языке. При наличии перевода русские названия пунктов меню приведены в скобках.

Оригинал этого документа находится здесь: http://women.kde.org/articles/tutorials/kdevelop3/index.html


Содержание

1. Введение
2. Требования
Как получить программу Qt Designer
Из вашего дистрибутива
Из tar-архива или анонимного CVS
Как получить программу KDevelop 3
Из вашего дистрибутива
Из tar-архива
Из CVS HEAD
Словарь
3. Создание приложения
Создание проекта
Создание в KDevelop базовой структуры приложения
Работа с Qt Designer
Разработка интерфейса программы
Добавление виджетов
Создание промежутков между виджетами
Сигналы и слоты
Написание кода
Реализация слота
4. Вкратце
5. Перевод простого проекта KDE
6. Авторы и лицензия

 

Далее

 

 

 Введение




 

Рабочая среда KDE

Добавление виджетов

Назад

Создание приложения

  Далее

Добавление виджетов

Для начала мы вставим текст в верхней части окна нашей программы, как на рис. 4. Этот текст объясняет пользователю, как работать с программой. Такой тип виджета называется Label. Чтобы добавить его на форму, проделайте следующее:


Текст в виджете Label


Наконец, измените размер виджета, перетаскивая маленькие квадратики по его краям. Расположите виджет точно в центре, перетаскивая его мышью. Эти операции — всего лишь временные меры, позднее мы научимся более элегантному способу расположения виджетов.


Верхний виджет QLabel


Точно так же можно добавить любой виджет, поддерживаемый в Qt Designer: выберите его в панели виджетов, "нарисуйте" его на форме и, наконец, измените его свойства и размеры.

В Qt Designer есть интересная концепция: одни виджеты могут содержать в себе другие. Сейчас мы используем это, чтобы создать поля ввода внутри рамки. На рис. 8 вы видите, что несколько виджетов находятся внутри рамки. Этот виджет называется Group Box. Сначала мы создадим рамку, выбрав в панели виджетов Containers => Group Box или меню Tools->Containers->GroupBox. Создайте рамку прямо под только что созданной надписью. Измените заголовок рамки, выбрав параметр title в редакторе свойств. Введите в качестве значения этого параметра "Details". Обратите внимание на знак "+" слева от параметра title. Это означает, что у этого параметра есть еще дополнительные свойства, которые тоже можно изменить.

Когда вы создадите рамку (т.е. виджет GroupBox), поместите внутри нее три виджета Label. В окне Object Explorer (меню Window => Views => Object Explorer) вы заметите, что надписи стали дочерними объектами рамки (см. ниже на рис. 12).

Измените текст в надписях, дважды щелкнув по ним.


Виджет GroupBox с тремя метками (labels)


Теперь создадим поля ввода текста. В них пользователь будет вводить свое имя и адрес. Мы используем простейший тип поля ввода: виджет QLineEdit. Он позволяет пользователю ввести только одну строку текста. Добавьте два таких виджета: для ввода имени пользователя и его адреса. Выберите пункт меню Tools => Input => LineEdit и расположите виджет рядом с надписью 'Your name:'. Аналогично создайте поле ввода адреса.

Пользователь должен будет выбрать комментарий из выпадающего списка (виджет ComboBox) с тремя пунктами. Щелкните на значке ComboBox или выберите пункт меню Tools => Input => ComboBox. Поместите выпадающий список рядом с надписью Comment. Дважды щелкните на нем, чтобы вызвать диалог, в котором вы можете добавлять пункты списка. Нажмите кнопку 'New Item' и введите какое-нибудь остроумное высказывание в поле ввода справа. Точно так же создайте еще два пункта списка и нажмите кнопку OK.

Если нужно, измените размер виджетов, чтобы они были аккуратно расположены.

До этого момента мы не обращали внимание на имена добавляемых виджетов. Чтобы мы могли впоследствии обращаться к виджетам из кода, нужно указать их имя. Надписи (label) не производят никаких действий, поэтому давать им имя необязательно. А вот другим виджетам, например, полям ввода, мы сейчас присвоим имя, т.к. нам нужно будет считывать введенный в них текст. Не забудьте, что имена должны быть осмысленными. Изменить имя виджета можно, выбрав свойство name, первое в списке редактора свойств. Верхнее поле ввода текста мы назовем nameBox, а то, которое под ним — mailBox. Выпадающему списку присвойте имя commBox.

Наконец, мы создадим надпись 'Generated Signature', под ней — виджет TextEdit (Tools => Input => TextEdit) с именем sigBox, куда будет выводиться созданная программой подпись, и два виджета PushButton (кнопки 'Create!' и 'Cancel'). Расположите их внизу формы. Присваивать им имена необязательно, но если хотите, сделайте это.

Сохраните форму. Теперь вы можете увидеть, как она будет выглядеть при запуске программы, выбрав пункт меню Preview => Preview Form.


Вид формы перед созданием макета


Рис. 13: Вид формы перед созданием макета

Назад

Содержание

Далее

Разработка интерфейса программы 

На уровень вверх

 Создание промежутков между виджетами




 

Рабочая среда KDE

Создание приложения

Назад

 

  Далее

Глава 3. Создание приложения.

Создание проекта

Создание в KDevelop базовой структуры приложения

Базовую структуру приложения (т.е. главное окно) можно легко и быстро создать при помощи KDevelop. Запустите KDevelop и в меню Project (Проект) выберите New Project (Создать проект). Появится мастер создания приложения. Выберите C++ => KDE => Simple KDE Application. Введите имя проекта (SigCreate), ваше имя и e-mail (рис. 1).


Мастер создания приложений


Нажмите Next (Далее), обратите внимание на опцию CVS и на шаблоны заголовков (они вставляются в начало каждого файла с исходным кодом). В последнем окне нажмите Finish (Готово). KDevelop создаст все файлы, необходимые для компиляции проекта. Вы можете использовать закладку File Selector (слева) для выбора файлов. Откройте 3 файла: main.cpp, sigcreate.cpp и sigcreate.h (рис. 2).


Просмотр файлов в KDevelop


Когда мастер создания приложений закончит работу, вы можете убедиться, что все в порядке, скомпилировав приложение. Для этого выберите Build (Сборка) -> Run automake & friends, затем Build (Сборка) -> Run configure. В окне Messages (Сообщения) должно появиться следующее:

" Good - your configure finished. Start make now
*
* *** Success ***

Теперь вы можете выполнить команду Build (Сборка) -> Build Project (или просто нажмите F8). Затем выполните команды Build (Сборка) -> Install (Установить) и Build (Сборка) -> Execute program (Запустить программу) (или F9). Результат показан на рис. 3.


Простое приложение для KDE


Рис. 3: Простое приложение для KDE

Теперь, когда мы создали основу, можно начать разработку приложения.

Если KDevelop не распознает автоматически переменные окружения QTDIR и KDEDIR, определите их значения вручную в диалоге Project (Проект) => Project Options... => Configure Options.


Параметры проекта


Рис. 6: Параметры проекта

Работа с Qt Designer

Qt Designer — это программа для разработки пользовательского интерфейса программы. Она помогает вам расположить на форме элементы управления и создать макет формы, чтобы при изменении ее размеров виджеты располагались должным образом. Рекомендую вам прочитать Руководство по Qt Designer, чтобы узнать все о Qt Designer.

Qt Designer включает в себя редактор кода, но для этой цели мы все-таки будем использовать KDevelop.

Итак, сейчас мы создадим интерфейс приложения, используя Qt Designer. В Qt Designer формы сохраняются с расширением .ui, потому что затем эти файлы будут обработаны программой uic для создания файлов .cpp и .h. KDevelop сделает это за вас, поэтому все, что нам нужно — просто создать форму.

Замечание

Всякий раз, когда вы добавляете или удаляете файлы из проекта (мы добавим файл пользовательского интерфейса с расширением .ui), требуется изменить файл Makefile.am. KDevelop сделает это, но вам нужно будет выполнить команду Build (Сборка) => Run automake & friends.

Выберите в окне KDevelop пункт меню File => New (Файл => Создать) и введите необходимую информацию в появившемся окне диалога. Сначала введите в качестве имени файла sigcreatedlg и выберите тип файла в выпадающем списке. Сейчас нам потребуется создать файл типа Widget (.ui). Обязательно проверьте, отмечен ли флажок "Add to project" (Добавить в проект), иначе файл Makefile.am не будет обновлен.


Создание файла пользовательского интерфейса


Нажмите кнопку OK. Появится диалог Automake manager.


Automake manager


Нажмите кнопку ОК.

Если только что созданный sigcreatedlg.ui не был автоматически открыт в Qt Designer, откройте Automake Manager (закладка в правой части главного окна), щелкните на файле правой кнопкой мыши и выберите Open With (Открыть с помощью), и в появившемся меню выберите пункт Qt Designer.

Замечание об именах файлов

К имени файла .ui принято добавлять "dlg", чтобы облегчить чтение кода другим людям. sigcreatedlg обозначает, что этот файл — это класс интерфейса. Обычно имена классов KDE начинаются с заглавной буквы K, и затем следует имя, наиболее полно описывающее вашу программу. Если бы это было настоящее приложение для KDE, мне нужно было бы назвать этот класс KSigCreate.


Qt Designer


Окно программы Qt Designer поделено на три части. С левой стороны находится список элементов управления. Справа могут находиться несколько диалогов; я же оставляю только диалог свойств Property Editor (закрыв два остальных). Здесь вы можете настроить внешний вид и поведение виджетов. Можно выбрать размер, цвет виджета и т.д. Посередине находится форма — окно вашего приложения. Здесь вы и разрабатываете интерфейс программы.

Замечание

После добавления в проект файла sigcreatedlg.ui вам нужно выполнить команду Build (Сборка) => Run Automake & friends и Run Configure. Иначе при компиляции программы изменения в файле Makefile.am не будут учтены.

Назад

Содержание

Далее

Словарь 

На уровень вверх

 Разработка интерфейса программы




 

Рабочая среда KDE

Авторы и лицензия.

Назад

 

 

Глава 6. Авторы и лицензия.

Автор руководства: (с)2001-2003 Anne-Marie Mahfouf <annma AT kde DOT org>

Участники в создании документа:

Этот документ распространяется на условиях GNU Free Documentation License.

Назад

Содержание

Перевод простого проекта KDE 

На уровень вверх

 




 

Рабочая среда KDE

Разработка интерфейса программы

Назад

Создание приложения

  Далее

Разработка интерфейса программы

Когда вы работаете с Qt Designer, вам нужно иметь четкое представление о том, как будет выглядеть ваша будущая программа. На рис. 8 показан внешний вид программы SigCreate по окончанию разработки. Виджеты расположены в окне так, чтобы помочь пользователю ввести информацию в нужные поля ввода. При разработке программы попытайтесь взглянуть на интерфейс глазами пользователя. Делайте все так, чтобы использование программы не представляло сложностей.


Программа, которую мы создадим

Примечание переводчика: я долго думала, нужно ли мне переводить не только текст этого документа, но и интерфейс программы, которую мы сейчас создаем. Общепринято писать программу на английском языке, а потом делать ее перевод на свой язык, поэтому я так и сделаю — оставлю все надписи на английском.


Наша программа будет создавать подпись для электронных писем и отображать ее на экране. Пользователю нужно будет свое имя, e-mail и выбрать один из трех комментариев. При нажатии кнопки Create! созданная подпись должна показываться в элементе управления MultiLineEdit. Выйти из программы можно, нажав кнопку Cancel.

Замечание

Этот проект был задуман только для обучения, поэтому навряд ли может быть как-то использован на практике.

В правой части окна Qt Designer находится редактор свойств, в котором показаны различные параметры созданной вами формы. Первая строка показывает имя формы: Form1. Щелкните по полю ввода и измените это имя на SigCreateDlg. Это задает имя класса диалога, поэтому нужно ввести осмысленное имя.

Теперь вы знаете, как изменяются свойства виджетов: нужно щелкнуть на имени свойства и в поле ввода справа от имени изменить значение. Измените свойство Caption на "SigCreateDlg v 0.1"


Редактор свойств


Сейчас мы начнем добавлять виджеты на форму.

Назад

Содержание

Далее

Создание приложения 

Up

 Добавление виджетов




 

Рабочая среда KDE

Как получить KDevelop 3

Назад

Требования

  Далее

Как получить KDevelop 3

Из вашего дистрибутива

KDevelop 3 сейчас называется Gideon (он будет переименован обратно c выпуском стабильного релиза). Поэтому исполняемый файл программы называется gideon. В некоторых дистрибутивах пакет с этой программой может называться Gideon или KDevelop-3.

Если вы не нашли KDevelop-3 для вашего дистрибутива, прочитайте следующий раздел, чтобы узнать, как получить исходники KDevelop-3 и скомпилировать их.

Из tar-архива

Вы можете загрузить KDevelop с ближайшего к вам зеркала, указанного в разделе Download. На момент написания последняя версия KDevelop была 3.0beta2.

Для компиляции KDevelop 3 потребуется Qt версии 3.1.0 или выше и kdelibs версии 3.1.0 или выше. Переменные окружения QTDIR и KDEDIR должны указывать на каталоги, куда установлены соответствено Qt и kdelibs.

Не забудьте настроить пути к KDE и Qt. Чаще всего ошибки при компиляции происходят из-за того, что переменные окружения не настроены должным образом. Выполните в консоли команду "set", чтобы увидеть все переменные окружения и их значения (список может быть довольно большим, поэтому для проверки определенной переменной выполняйте команду set | grep имя_переменной, например, set | grep PATH - прим. пер.). Вам нужно установить значения переменных PATH и LD_LIBRARY_PATH:


export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

Если у вас возникают пролемы с компиляцией и запуском KDevelop, вы можете задать свой вопрос в форуме.

Если вы в первый раз работаете с KDevelop, попробуйте создать пустой проект и скомпилировать его, чтобы привыкнуть к интерфейсу и значкам программы.

Из cvs HEAD

Краткое описание действий для тех, кто хочет получить самую свежую версию KDevelop. Версия KDevelop из CVS действительно стоит того, чтобы установить ее. Вам потребуются Qt >= 3.1.0 и kdelibs >=3.1.0.


 mkdir KdevelopCVS
 cd KDevelopCVS
 export CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde
 cvs login
 (нажмите ENTER вместо ввода пароля)
 cvs co kdevelop

Когда загрузка закончится:


 make -f Makefile.cvs
 ./configure --prefix='kde-config --prefix'
 make
 make install (нужны привилегии root)

Подробнее все это описывается в инструкциях по установке на сайте KDevelop.

Назад

Содержание

Далее

Требования 

На уровень вверх

 Словарь




 

Рабочая среда KDE

Вкратце

Назад

 

  Далее

Глава 4. Вкратце.

Краткое описание действий в KDevelop и Qt Designer.

Назад

Содержание

Далее

Реализация 

На уровень вверх

 Перевод простого проекта KDE




 

Рабочая среда KDE

Введение

Назад

 

  Далее

Глава1. Введение.

Чтобы сделать что-то полезное в Qt Designer, нам для тренировки нужно сначала создать небольшую программу, которая покажет вам мощь Qt Designer и KDevelop. Надеюсь, этот документ поможет вам в создании вашей первой программы для KDE..

Если вы уже хорошо знакомы с KDevelop и Qt Designer, сразу переходите к четвертой главе, где кратко описывается, что нужно сделать.

KDevelop поможет вам создать законченное приложение для KDE. Проект KDE использует утилиты autoconf и automake, так что KDevelop создаст все необходимое для их работы (каталог admin, Makefile.cvs, Makefile.am, и т.п.).

Назад

Содержание

Далее

Qt Designer и KDevelop-3.0 для новичков 

На уровень вверх

 Требования




 

Рабочая среда KDE

Словарь

Назад

Требования

  Далее

Словарь

Назад

Содержание

Далее

Как получить KDevelop 3 

На уровень вверх

 Создание приложения




 

Рабочая среда KDE

Реализация слота

Назад

Создание приложения

  Далее

Реализация слота

Когда мы нажимаем на кнопку Create!, наша программа должна отображать подпись в поле ввода (виджет TextEdit). Вам стоит прочитать документацию к Qt, чтобы узнать, какие сигналы и слоты уже доступны для определенного виджета. Например, взгляните на описание класса QPushButton (или откройте файл /usr/lib/qt/doc/html/qpushbutton.html - прим. пер.). Он наследуется из класса QButton, и поэтому в документации к QButton вы найдете список доступных сигналов.

Сигналы

void pressed ()
void released ()
void clicked ()
void toggled ( bool on )
void stateChanged ( int state )

Нам понадобится сигнал clicked() кнопки Create!.

Так как класс SigCreate является производным от класса SigCreateDlg, мы реализуем слот в классе SigCreate. Это будет публичный метод. Добавьте в файл sigcreate.cpp следующие строки:

 void SigCreate::slotCreateSig()
 {
 sigBox->append("\n--");
 sigBox->append(nameBox->text());
 sigBox->append(mailBox->text());
 sigBox->append(commBox->currentText());
 }

и, разумеется, этот метод нужно объявить в файле sigcreate.h:

 public slots:
     virtual void slotCreateSig();

Из приведенного выше кода видно, что в sigBox (виджет TextEdit) сначала будет добавлена строка "--", затем текст из nameBox (ваше имя), затем e-mail и комментарий. append() — это метод класса QTextEdit, подробнее обо всех методах можно прочитать в документации к классу QTextEdit. Вы сможете найти нужный вам метод и узнать о возможностях виджета.

Заново скомпилируйте проект (Build (Сборка) =>Build Project, затем Build =>Install). И вот что у вас должно получиться:
Работает!

Рис. 20: Работает!

Еще пара слов о сигналах и слотах. Этот механизм безопасен: сигнатура сигнала должна совпадать с сигнатурой слота-приемника (например, valueChanged(int) может быть соединен только со слотом, тип аргумента которого — int). Также не забудьте, что все классы, унаследованные из QObject или одного из его подклассов (например, QWidget), могут содержать сигналы и слоты.

Все строки, использованные в программе для KDE, должны быть заключены в функцию i18n() (не забудьте добавить заголовочный файл klocale.h: #include klocale.h), т.к. все проекты KDE переводятся на разные языки. Об интернационализации подробно рассказывается в документе KDE Translation HowTo. В Главе 5 этого руководства также рассказано, как сделать перевод вашего приложения.

Если вам нужна помощь, вы можете послать мне письмо или поговорить со мной по IRC: сервер irc.openprojects.net, канал #kde-women или #kde-devel, мой ник — annma. (пишите автору по-английски - прим. пер.)

Исходники проекта SigCreate лежат здесь.

Назад

Содержание

Далее

Написание кода 

На уровень вверх

 Вкратце




 

Рабочая среда KDE

Требования

Назад

 

  Далее

Глава 2. Требования

Чтобы выполнять действия, описанные в этом документе, вам потребуются:

Как получить Qt Designer

Из вашего дистрибутива

Qt Designer входит в состав Qt версии 3.1.x и выше. Если у вас установлена более ранняя версия, обновите её хотя бы до 3.1.x. На момент написания текущая версия Qt была 3.2 (а на момент перевода — 3.3 - прим. пер.).

Проверьте, установлены ли все связанные с Qt пакеты. Для компиляции программ вам потребуются заголовочные файлы, обычно находящиеся в пакете qt-devel. Также убедитесь, что установлен Qt Designer, т.к. в некоторых дистрибутивах эта программа находится в отдельном пакете.

Чтобы проверить, все ли необходимое есть в вашей системе, выполните следующую команду:

locate qstring.h

Если на экране появится что-то вроде /usr/lib/qt3/include/qstring.h , тогда вы можете присвоить переменной окружения QTDIR значение /usr/lib/qt3/. В оболочке bash для этого нужно ввести

export QTDIR=/usr/lib/qt3

Из tar-архива или анонимного cvs

Вы можете скачать Qt с сайта компании Trolltech или загрузить модуль qt-copy из cvs. Qt для Linux распространяется на условиях GPL (это не совсем так. Есть еще и платная версия, включающая в себя некоторые дополнительные возможности, и которая, в отличие от свободно распространяемой версии, может быть использована для разработки проприетарных программ - прим. пер.)

Если вы не знаете, каким образом можно загрузить копии модулей qt-copy и kde и скомпилировать их, прочитайте документ об использовании анонимного cvs.

Вы должны установить в качестве значения переменной окружения QTDIR полный путь к каталогу, в который вы установили Qt. В оболочке bash, например, можно ввести:

export QTDIR=/usr/local/qt

если, конечно, /usr/local/qt действительно является каталогом с установленным Qt. Подробнее об установке Qt написано в файле INSTALL.

Затем скопилируйте Qt при помощи следующих команд:

./configure -system-zlib -qt-gif -system-libpng -system-libjpeg \
  -plugin-imgfmt-mng -thread -no-exceptions -debug -fast
 make

Выполнять команду make install не нужно.

Qt Designer находится в каталоге, куда вы установили Qt, в подкаталоге bin. Вы можете запустить Qt Designer следующей командой:

/usr/local/qt/bin/designer

По адресу http://hr.uoregon.edu/davidrl/kde/qt.html находится подробное объяснение того, как скомпилировать Qt из tar-архива.

Назад

Содержание

Далее

Введение 

На уровень вверх

 Как получить KDevelop 3




 

Рабочая среда KDE

Сигналы и слоты

Назад

Создание приложения

  Далее

Сигналы и слоты

Сигналы и слоты используются для связи между объектами Qt. Механизм сигналов и слотов является важнейшей возможностью Qt и, возможно, тем, чем Qt больше всего отличается от остальных инструментариев, часто использующих использующих механизмы обратной связи. Сигналы исходят от объектов, когда происходит какое-то событие, например, пользователь печатает что-то в поле ввода или нажимает кнопку. Слот — это просто функция, вызываемая в ответ на определенный сигнал.

Теперь, когда добавлены все необходимые виджеты и создан макет формы, остается создать соединения сигналов и слотов. Это можно сделать вручную при помощи функции connect(), но в Qt Designer есть простой и эффективный способ — утилита соединения (Connection Tool). Для ее запуска либо нажмите кнопку на панели инструментов (на ней нарисована красная стрелка и зеленый прямоугольник), либо выберите пункт меню Tools => Connect Signals/Slots, либо просто нажмите F3. Чтобы создать соединение, щелкните на виджете, с которым должен взаимодействовать слот, перетащите появившуюся линию на форму и отпустите кнопку мыши.

Сначала займемся кнопкой Create!. Щелкните на значке Connect Signal/Slot, выберите соответствующий пункт из меню Tools или нажмите F3. Затем щелкните на кнопке Create! и перетащите линию за пределы формы. Когда вы отпустите кнопку мыши, на экране появится диалог, показанный на рис. 17.

Нам нужно создать слот (не забывайте, что слот — это функция), который будет выводить подпись при нажатии кнопки Create!. Сигнал, который будет выдан при нажатии кнопки, называется clicked() (для виджета QPushButton существует пять сигналов), и нам нужно создать для него слот и соединение.

Чтобы создать слот, щелкните на кнопке "Edit Slots". Появится окно создания слота (см. рис. 16). Щелкните на кнопке New Slot и в списке появится новый слот. Вместо new_slot() введите slotCreateSig(). В выпадающем списке Access должно стоять значение public. Когда вы нажмете ОК, вы вернетесь к диалогу View and Edit Connections, где в списке слотов увидите только что созданный.


Создание слота
Рис. 16: Создание слота
Диалог просмотра и редактирования соединений

Рис. 17: Диалог просмотра и редактирования соединений

Чтобы создать соединение, нужно просто выбрать нужный сигнал (в нашем случае — clicked()) и слот (созданный нами slotCreateSig()). Когда вы выбрали сигнал и слот, вы увидите, что слева появится зеленая галочка. Теперь нажмите ОК.

Повторите ту же операцию для кнопки Cancel, используя сигнал clicked() и слот close(). На этом создание сигналов и слотов завершено.

Внимание

Не забудьте сохранить форму!

Назад

Содержание

Далее

Создание промежутков между виджетами 

На уровень вверх

 Написание кода




 

Рабочая среда KDE

Написание кода

Назад

Создание приложения

  Далее

Написание кода

Еще раз убедитесь, что сохранили форму под именем sigcreatedlg.ui и закройте окно Qt Designer. Если вы откроете этот файл в своем любимом текстовом редакторе, то увидите, что код в этом файле написан не на С++, а на XML. Вместе с Qt Designer поставляется специальная программа uic, преобразующая файл .ui в файлы .h и .cpp. KDevelop запускает ее автоматически.

Замечание

Если по какой-либо причине KDevelop не создал из sigcreatedlg.ui файлы .h и .cpp, введите в консоли следующие команды, находясь в каталоге sigcreate/src/:

uic -o sigcreatedlg.h sigcreatedlg.ui
uic -o sigcreatedlg.cpp -i sigcreatedlg.h sigcreatedlg.ui

Теперь нужно унаследовать созданный KDevelop'ом класс SigCreate из класса диалога, созданного в Qt Designer. Для этого откройте в Kdevelop файл sigcreate.h, выбрав его на закладке File Selector (в левой части окна KDevelop) и добавьте строку

#include "sigcreatedlg.h"

наверх файла sigcreate.h, со всеми остальными необходимыми заголовочными файлами:.

 #include <kapplication.h>
 #include <qwidget.h>
 #include <qlineedit.h>
 #include <qmultilineedit.h>
 #include <qcombobox.h>
 #include <sigcreatedlg.h>

 /** SigCreate is the base class of the project */
 class SigCreate : public SigCreateDlg
 {
 

Замените public KMainWindow на public SigCreateDlg, т.к. SigCreate наследуется из SigCreateDlg.

В файле sigcreate.h должны быть такие строки:

 class SigCreate : public SigCreateDlg  {
    Q_OBJECT
 public:
         /** constructor */
        SigCreate(QWidget *parent=0, const char *name=0);
          /** destructor */
        ~SigCreate();
 };
 

Файл sigcreate.cpp должен выглядеть так:

 #include "sigcreate.h"

 SigCreate::SigCreate(QWidget *parent, const char *name) : SigCreateDlg(parent, name)
 {
 }

 SigCreate::~SigCreate()
 {
 }
 

Вам также нужно вручную добавить заголовочные файлы. Добавьте в sigcreate.h три использованных нами класса:

 #include <qlineedit.h>
 #include <qcombobox.h>
 #include <qmultilineedit.h>

Закомментируйте следующие строки в файле main.cpp:

   /* if (app.isRestored())
    {
        RESTORE(SigCreate);
    }
    else*/

т.к. проект основан на классе KMainWindow, который значительно упрощает работу.

Замечание

Эта программа предназначена для обучающего курса, поэтому она не всегда отражает реальный ход программирования. На самом деле, после включения в проект файла .ui нужно создать класс SigCreate. Для этого выберите пнукт меню Project => New Class... (Проект => Новый класс). Появится диалог создания класса. Введите имя класса (SigCreate) и имя базового класса (SigCreateDlg). Обязательно отметьте флажок "generate a QWidget-childclass" (Генерировать класс, производный от QWidget), и нажмите ОК. Мы не сделали всего этого, т.к. класс SigCreate — главное окно нашей программы.

Теперь, чтобы проверить, что все в порядке, мы можем запустить проект. Выполните команды Build => Run automake & friends, затем Build => Run configure, Build => Build Project и Build => Install. Должно появиться окно программы (см. рис. 19), но кнопка Create! не будет работать. Нам еще предстоит реализовать слот slotCreateSig().

Если во время компиляции появляется такая ошибка: Syntax error before `{' token", ссылаясь на открывающую скобку перед строкой Q_OBJECT в файле sigcreate.h, значит вы забыли добавить

#include "sigcreatedlg.h"

или файл sigcreatedlg.h не был создан (см. замечание выше).


Программа

Рис. 19: Почти готово

Назад

Содержание

Далее

Сигналы и слоты 

На уровень вверх

 Реализация слота




 

Рабочая среда KDE

Создание промежутков между виджетами

Назад

Создание приложения

  Далее

Создание промежутков между виджетами

В этом разделе описывается создание макета формы. Если вы, включив предварительный просмотр формы (Ctrl+T), измените размер окна, то увидите, что все виджеты не изменяют размер и остаются на своих местах. Поэтому нам нужно использовать такую возможность Qt, как "распорки" (spacers). Распорки — это как бы пружины, отталкивающие виджеты друг от друга.

Научиться использовать распорки и управлять макетом можно только путем проб и ошибок. Главное — помнить, что при работе с распорками их нужно расставлять сначала горизонтально, и только потом — вертикально.

Для начала мы используем распорки для центрирования верхней надписи. Измените размер надписи так, чтобы она занимала как можно меньше места, но при этом полностью вмещала текст. Добавьте две распорки, по одной с каждого края. Для этого нажмите значок с нарисованной на нем пружиной или выберите пункт меню Layout => Add Spacer. Щелкните по пустому месту слева от надписи и выберите Horizontally. Появится синяя распорка (см. рис. 14). Повторите ту же операцию справа от надписи. Затем добавьте распорку справа от надписи 'Generated Signature' и еще одну справа от кнопки 'Create!'.


Adding the spacers

Рис. 14: Добавление распорок

Теперь, когда мы заполнили пустое место распорками, нам нужно создать макет, который позволит виджетам изменять свой размер при изменении размеров формы. Создание хорошего макета — важный этап разработки программы. Опять же, попробуйте несколько раз изменить размер формы, чтобы проверить, все ли в порядке. Мы можем использовать вертикальную или горизонтальную ориентацию, а также привязку к сетке. Верхний ряд виджетов расположен горизонтально (распорка + надпись + распорка), поэтому тут нужно применить горизонтальную ориентацию. Выделите одновременно три виджета: щелкните на первой распорке, затем, удерживая клавишу Shift, щелкните по надписи и затем на второй распорке. Нажмите кнопку Horizontal Layout на панели инструментов или выберите пункт меню Layout => Lay Out Horizontally. Вокруг трех выбранных объектов появится красная линия, показывающая, что объекты были объединены в макет. При необходимости вы можете изменить размер красного прямоугольника.

Теперь мы можем повторить эту операцию для трех надписей внутри виджета GroupBox (на этот раз используя вертикальную ориентацию), и для двух полей ввода и выпадающего списка. В данном случае лучше использовать вертикальную ориентацию, чтобы объекты были выровнены. Если бы мы использовали горизонтальную ориентацию для каждой надписи и поля ввода, их размер и положение изменялись бы неправильно. Для надписи 'Generated Signature' и распорки, а также для двух кнопок и распорки между ними требуется горизонтальная ориентация.

Наконец, нам нужно поместить все элементы управления в сетку (grid). Щелкните правой кнопкой по форме и выберите "Lay Out in a Grid". Результат изображен на рис. 15.


Законченный макет формы
Рис. 15: Законченный макет формы

Назад

Содержание

Далее

Добавление виджетов 

На уровень вверх

 Сигналы и слоты




 

Рабочая среда KDE

Перевод простого проекта KDE.

Назад

 

  Далее

Глава 5. Перевод простого проекта KDE.

Для начала загрузите исправленный gettext и установите его в свой домашний каталог.

 $ tar xvzf gettext-0.10.35-kde.tar.gz
 $ cd gettext-0.10.35-kde
 $ ./configure
 $ make
 $ mkdir -p ~/bin
 $ cp src/gettext src/xgettext ~/bin # копируем gettext и xgettext в каталог HOME/bin
 $ export PATH=~/bin:$PATH
 

Подготовка перевода

Перейдите в каталог с вашим проектом:

 $ cd /путь/к/проекту
 

Установите в качестве значения переменной окружения KDEDIR каталог, куда установлен KDE — в Mandrake это /usr (а в Slackware — /opt/kde - прим. пер.). Каталог KDE можно узнать, введя команду "kde-config --prefix".

 $ export KDEDIR=`kde-config --prefix` # или export KDEDIR=/usr
 

Затем создайте файлы переводов:

 $ make -f admin/Makefile.common package-messages
 

Написание перевода

При помощи kbabel переведите .po файлы в каталоге po/ вашего проекта.

Внимание

Не переводите файл .pot!

Компиляция и установка файлов перевода

$ make package-messages
$ sudo make install
 

Ссылка

Оригинал этой главы находится здесь, спасибо Thomas Nagy.

Далее

Содержание

Назад

Вкратце 

На уровень вверх

 Авторы и лицензия