The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Qt, KDevelop: Помогите создать moc-файл для моего класса"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Qt, KDevelop: Помогите создать moc-файл для моего класса"
Сообщение от sk_alex emailИскать по авторуВ закладки(??) on 13-Янв-05, 19:20  (MSK)
Доброго времени суток. Пишу свою первую программу с использованием Qt.

Среда разработки: Mandrake Linux 9.1, KDevelop 2.1.5.

Создал при помощи мастера в KDevelop'е Qt MDI-приложение. При попытке добавить свой класс-наследник от QMultiLineEdit (класс называется CmdWindow) получил ругань: "undefined reference to 'vtable for CmdWindow'". Выяснил, что причиной этому является отсутствие moc-файла для данного класса. И на этом этапе я и заткнулся. :( Я так и не смог понять, как можно создать для моего класса moc-файл средствами KDevelop или из командной строки. В менюшках KDevelop'а не нашел ничего похожего (может быть, плохо искал?). При попытке набрать в консоли команду 'moc' получаю сообщение, что такой команды не существует.

Класс объявлен так (файл cmdWindow.h):

#ifndef CMD_WINDOW_H
#define CMD_WINDOW_H

#include <qmultilineedit.h>

class CmdWindow : public QMultiLineEdit
{
  Q_OBJECT

  public:
    CmdWindow(QWidget* parent, const char *name, int wflags);
    ~CmdWindow();

  protected:
    virtual void closeEvent(QCloseEvent*);
};

#endif // CMD_WINDOW_H


Реализация класса (файл cmdWindow.cpp) следующая:

#include "cmdWindow.h"
#include <qwidget.h>

CmdWindow::CmdWindow(QWidget *parent, const char* name, int wflags) : QMultiLineEdit(parent, name)
{
}

CmdWindow::~CmdWindow()
{
}

void CmdWindow::closeEvent(QCloseEvent*)
{
  // LEAVE THIS EMPTY: THE EVENT FILTER IN THE BsconsApp CLASS TAKES CARE
  // FOR CLOSING
  // QWidget closeEvent must be prevented.
}


Кто знает, в чем дело, помогите, пожалуйста. Заранее благодарен всем откликнувшимся.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Qt, KDevelop: Помогите создать moc-файл для моего класса"
Сообщение от XMan Искать по авторуВ закладки(ok) on 13-Янв-05, 21:23  (MSK)
> При попытке набрать в консоли команду 'moc' получаю сообщение, что такой команды не существует.

А куда она делась ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Qt, KDevelop: Помогите создать moc-файл для моего класса"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 13-Янв-05, 21:26  (MSK)
Однозначно тебя спасет только moc. А если не просетапил правильно QT в пути - твои половые трудности.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Qt, KDevelop: Помогите создать moc-файл для моего класса"
Сообщение от sk_alex emailИскать по авторуВ закладки(??) on 14-Янв-05, 12:56  (MSK)
Спасибо откликнувшимся. Проблема решена. Действительно в системе были не прописаны пути для Qt.

А вот фразы типа "А если не просетапил правильно QT в пути - твои половые трудности" сильно обижают. Вместо того, чтобы так писать, лучше помочь советом новичку, долгое время сидевшему под виндой и теперь испытывающему определенные трудности с работой под малознакомой для него Linux, что именно нужно сделать для того, чтобы правильно настроить систему и решить обозначенную трудность.

Для тех, кто, возможно, столкнется с аналогичными проблемами, и будет искать информацию по их решению, опишу, как я это сделал:

1. Запустил поиск файла "moc" по всему винчестеру. Обнаружил, что лежит он в /usr/lib/qt3/bin (в других дистрибутивах, полагаю, он может оказаться, несколько в ином месте)

2. Сконфигурировал файл bashrc, находящийся в директории настроек данного пользователя (/root для root-а и /home/<имя пользователя> для остальных пользователей), добавив в него две строчки (в начало файла после строки #.bashrc - может быть и не обязательно именно сюда, но так по крайней мере работает):
PATH=/user/lib/qt3/bin (если там уже прописаны какие-то пути, то через двоеточие добавить данный путь в конец строки)
export PATH

После этого команда moc в командной строке появилась.

(Стоит отметить, что именно с этим пунктом у меня и возникли наибольшие трудности, т.к. нужно было выяснить, что изменения нужно вносить именно в указанный файл и именно таким образом - долго провозился, прежде чем выяснил, что нужно еще и "export PATH" обязательно дописывать).

3. Создал moc-файл для своего класса, набрав в командной строке:
moc -o moc_cmdWindow.cpp cmdWindow.h
После этого файл moc_cmdWindow.cpp появился в директории, где лежат файлы моего проекта.

4. Делаю перекомпиляцию всего проекта - означенная в самом начале ошибка исчезла. Программа заработала, как ей и полагалось. Все. :-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Qt, KDevelop: Помогите создать moc-файл для моего класса"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 14-Янв-05, 13:26  (MSK)
>
>А вот фразы типа "А если не просетапил правильно QT в пути
>- твои половые трудности" сильно обижают. Вместо того, чтобы так писать,
>лучше помочь советом новичку, долгое время сидевшему под виндой и теперь
>испытывающему определенные трудности с работой под малознакомой для него Linux

Дак, это и есть совет, который тебе помог. Ключевые слова - QT, пути.

:-) Просто вчера было плохое настроение :-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру