Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

 

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

Назад

Содержание

Далее

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

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

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