Рабочая среда 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: Почти готово

Назад

Содержание

Далее

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

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

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