crossplatform.ru

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


  Ответ в Ошибка компоновки из-за макроса Q_OBJECT (при сабклссинге QwtPlot)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rocky Дата 24.9.2010, 17:40
  Такчто QwtPlot является наследником QObject точно...

kwisp, я нигде не нашел чтоб генерились файлы *.moc.... странно.. но все равно у меня вряд ли то, потому что класс объявлен в отдельном и точно неповторяющемся хидере (

--------
UPD

усе, разобралси =)

помог этот тред
http://www.archivum.info/qt-interest@troll...bject-quot.html

решение - забыл добавить определение препроцессору QWT_DLL =)
Рокки Дата 24.9.2010, 17:27
  Вот взял мастером добавил новый класс.
//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);
..........
};
MoPDoBoPoT Дата 24.9.2010, 17:10
  После добавления Q_OBJECT надо чистить проект и делать qmake && make.
Qwt не знаю, поэтому вопрос - QwtPlot является наследником QObject?
kwisp Дата 24.9.2010, 16:59
  Rocky,
нужны оперделения классав.
какие инклюды пишешь?

возможно у тебя такая же проблема как тут
Rocky Дата 24.9.2010, 14:28
  Всем привет! Помогите пожалуйста разобраться с проблемой... Есть класс-наследник от 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). Из-за чего возникает ошибка?

Спасибо)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 15:59