Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.




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

Библиотека сайта или "Мой Linux Documentation Project"

 

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

Назад

Содержание

Далее

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

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

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




Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют