Qt. (наследование и новые слоты)

Модератор: Модераторы разделов

Yarik
Сообщения: 11

Qt.

Сообщение Yarik »

Прошу помочь с созданием наследника и нового слота для него.
В поиске по форуму находил похожую тему, но вынесение тела методов из класса не помогло.

Есть следующий класс:

Код:

class MyQFrame : public QFrame { Q_OBJECT public: MyQFrame(QWidget* object); public slots: void setServo(); }; MyQFrame::MyQFrame(QWidget* object):QFrame(object){ } void MyQFrame::setServo(){ int num,val; char c[]="#00 P0000 S500\n"; for(int i=2;i>=1;i--){ c[i]+=num%10; num/=10; } for(int i=8;i>=5;i--){ c[i]+=val%10; val/=10; } port.writeToPort©; }


и ошибка сборки:

Код:

/var/tmp//ccflzcXQ.o(.text+0x319): In function `MyQFrame::MyQFrame(QWidget*)': : undefined reference to `vtable for MyQFrame' /var/tmp//ccflzcXQ.o(.text+0x323): In function `MyQFrame::MyQFrame(QWidget*)': : undefined reference to `vtable for MyQFrame' /var/tmp//ccflzcXQ.o(.text+0x2019): In function `MyQFrame::MyQFrame(QWidget*)': : undefined reference to `vtable for MyQFrame' /var/tmp//ccflzcXQ.o(.text+0x2023): In function `MyQFrame::MyQFrame(QWidget*)': : undefined reference to `vtable for MyQFrame' /var/tmp//ccflzcXQ.o(.gnu.linkonce.t._ZN8MyQFrameD1Ev+0x17): In function `MyQFrame::~MyQFrame()': : undefined reference to `vtable for MyQFrame' /var/tmp//ccflzcXQ.o(.gnu.linkonce.t._ZN8MyQFrameD1Ev+0x21): more undefined references to `vtable for MyQFrame' follow


не могу понять в чём именно проблемма. просматривал некоторое количество Qt-хедеров, явных ошибок не вижу.
Спасибо сказали:
gmorgunov
Сообщения: 27
ОС: linux mandriva2007

Re: Qt.

Сообщение gmorgunov »

Надо:

Код: Выделить всё

MyQFrame::MyQFrame(QWidget* object=0):QFrame(object){
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Qt.

Сообщение Shura »

Нужно создать moc-файл. Для этого есть утилита moc для qt3 или moc-qt4 для qt4

Код: Выделить всё

moc-qt4 -o outputfile.cpp inputfile.h
Rock'n'roll мертв © БГ
Спасибо сказали:
Yarik
Сообщения: 11

Re: Qt.

Сообщение Yarik »

спасибо, я опробую предложенные варианты
Спасибо сказали:
gmorgunov
Сообщения: 27
ОС: linux mandriva2007

Re: Qt.

Сообщение gmorgunov »

Сам напоролся на эти грабли :)
Что сделал? Просто вынес сигнатуру класса в отдельный файл:
MyQFrame.h

Код: Выделить всё

#ifndef _MyQFrame_h_
#define _MyQFrame_h_

#include <QtGui>
class MyQFrame : public QFrame
{
Q_OBJECT
public:
MyQFrame(QWidget* object);
public slots:
void setServo();
};
#endif

И все собралось.
Спасибо сказали: