crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Ошибка компоновки из-за макроса Q_OBJECT (при сабклссинге QwtPlot)
Rocky
  опции профиля:
сообщение 24.9.2010, 14:28
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Всем привет! Помогите пожалуйста разобраться с проблемой... Есть класс-наследник от QwtPlot. Добавляю кнопку и делаю ее сыном этого класса-наследника. Далее нужно ловить нажатия на нее. Соединил нужный сигнал со слотом, но ф-я connect возвращает false. Решил что это из-за того, что в начале капсулы моего класса не объявил макрос Q_OBJECT. Как только это делаю, получаю ошибку
Цитата
moc_SpectrViewer.obj : error LNK2001: неразрешенный внешний символ ""public: static struct QMetaObject const QwtPlot::staticMetaObject" (?staticMetaObject@QwtPlot@@2UQMetaObject@@B)"
F:\CurrentProjects\RTCalculator\Debug\RTCalculator.exe : fatal error LNK1120: 1 неразрешенных внешних элементов


class CSpectrViewer : public QwtPlot
    {
        Q_OBJECT

.....


Сам moc_SpectrViewer.cpp нормально генерируется, включен в проект (исп. VS 2008, qt 4.6.2). Из-за чего возникает ошибка?

Спасибо)

Сообщение отредактировал Rocky - 24.9.2010, 14:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_Рокки_*
сообщение 24.9.2010, 17:27
Сообщение #2





Гости








    


Вот взял мастером добавил новый класс.
//buf.h
#ifndef BUF_H
#define BUF_H

#include <qwt_plot.h>

class buf : public QwtPlot
{
    Q_OBJECT

public:
    buf(QWidget *parent);
    ~buf();

private:
    
};

#endif // BUF_H


//buf.cpp
#include "buf.h"

buf::buf(QWidget *parent) : QwtPlot(parent)
{

}

buf::~buf()
{

}

Больше вообще ничего не сделал. Такая же ошибка.. если Q_OBJECT закоментировать - то линкуется... А так - нет. moc_buf.cpp генерируется... QwtPlot объявлен так
class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
{
    Q_OBJECT
.......  
    explicit QwtPlot(QWidget * = NULL);
    explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
..........
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 13:02