Есть класc, наследованный от QDialog
#ifndef __PANEL_REG__
#define __PANEL_REG__
#include <QtGui>
#include <QDebug>
class TrendChart;
class IoDev;
//namespace Ui {
// class panelReg;
//}
#include "ui_panelReg.h"
class RpanelReg: public QDialog
{
Q_OBJECT
public:
RpanelReg(IoDev &source,int n=0,QWidget *p=NULL,QString cfName=":/text/reg.txt",QString tableName="trend");
~RpanelReg();
protected slots:
void changeReg(int Index);
void Control();
void runTrend();
void updateData();
// Ctrl
void setCtrlValue(double v);
void setCtrlValue(int v);
// Parm
void setParmValue(double v);
void setParmValue(int v);
void setParmAM(int v);
void setParmRej(int v);
void setParmRev();
void setParmKprSig(int v);
void setParamMode(bool v);
void setGraph();
protected:
Ui::panelReg *ui;
int RegNum;
QVector<QStringList> RegDes;
IoDev &src;
TrendChart *trChart;
QVector<double> v;
QHash<QString, Ri::Index> ctrlSearch;
QString tblName;
double kk_1 ;
};
#endif
Мне нужно сделать наследника этого класса, нужно немного изменить его поведение. наследую его так
#ifndef VPANELREG_H
#define VPANELREG_H
#include <panelReg.h>
class VpanelReg : public RpanelReg
{
Q_OBJECT
public:
VpanelReg(IoDev &source,int n=0, QWidget *p=NULL,QString cfName=":/text/reg.txt",QString tableName="trend");
void setRegMode(int RegMode) {rm=RegMode;}
private slots:
void checkChangeReg(int);
private:
int rm;
};
#endif // VPANELREG_H
но вот только при связывании получаю ошибки
build/mnemo.o: In function `~VpanelReg':
/home/vanessa/src/work/dondushen/viparka/scada/vpanelreg.h:5: undefined reference to `vtable for VpanelReg'
/home/vanessa/src/work/dondushen/viparka/scada/vpanelreg.h:5: undefined reference to `vtable for VpanelReg'
build/vpanelreg.o: In function `VpanelReg':
/home/vanessa/src/work/dondushen/viparka/scada/vpanelreg.cpp:5: undefined reference to `vtable for VpanelReg'
/home/vanessa/src/work/dondushen/viparka/scada/vpanelreg.cpp:5: undefined reference to `vtable for VpanelReg'
build/vpanelreg.o: In function `VpanelReg::tr(char const*, char const*)':
/home/vanessa/src/work/dondushen/viparka/scada/vpanelreg.h:7: undefined reference to `VpanelReg::staticMetaObject'
collect2: ld returned 1 exit status
Правда если убрать Q_OBJECT из класса-наследника то все собирается, но естественно слот, что в наследнике определён не работает, функция connect говорит
Object::connect: No such slot RpanelReg::checkChangeReg(int) in vpanelreg.cpp:8
Object::connect: (sender name: 'regList')
Object::connect: (receiver name: 'panelReg')
то-есть она просто ищет слот checkChangeReg в родителе, хотя он определен в наследнике.
Как с этим бороться ?