PDA

View Full Version : undefined reference to `vtable for MyClass' [SOLVED]



PaceyIV
3rd August 2009, 17:13
I create seven custom widget, all in the same way. Now, with the eighth I've got this error code when I compile that I don't understand.

grptransmitterpoweroptions.o: In function `GrpTransmitterPowerOptions':
/home/paceyiv/workspace/QtProjects/MatrixTestTool/test/TestFirmwareVersion/../../src/grptransmitterpoweroptions.cpp:12: undefined reference to `vtable for GrpTransmitterPowerOptions'
/home/paceyiv/workspace/QtProjects/MatrixTestTool/test/TestFirmwareVersion/../../src/grptransmitterpoweroptions.cpp:12: undefined reference to `vtable for GrpTransmitterPowerOptions'
/home/paceyiv/workspace/QtProjects/MatrixTestTool/test/TestFirmwareVersion/../../src/grptransmitterpoweroptions.cpp:12: undefined reference to `vtable for GrpTransmitterPowerOptions'
/home/paceyiv/workspace/QtProjects/MatrixTestTool/test/TestFirmwareVersion/../../src/grptransmitterpoweroptions.cpp:12: undefined reference to `vtable for GrpTransmitterPowerOptions'
grptransmitterpoweroptions.o: In function `GrpTransmitterPowerOptions::tr(char const*, char const*)':
/home/paceyiv/workspace/QtProjects/MatrixTestTool/test/TestFirmwareVersion/../../src/grptransmitterpoweroptions.h:11: undefined reference to `GrpTransmitterPowerOptions::staticMetaObject'
collect2: ld returned 1 exit status

Here my code

Header


#ifndef GRPTRANSMITTERPOWEROPTIONS_H
#define GRPTRANSMITTERPOWEROPTIONS_H

#include <QGroupBox>
QT_FORWARD_DECLARE_CLASS(QRadioButton);
QT_FORWARD_DECLARE_CLASS(QSpinBox);
QT_FORWARD_DECLARE_CLASS(QLabel);

class GrpTransmitterPowerOptions : public QGroupBox
{
Q_OBJECT

public:
GrpTransmitterPowerOptions(QWidget *parent = 0);

int getPAMode();
int getPowerLevel();

public slots:
void setPAMode(int paMode);
void setPowerLevel(int powerLevel);
void setMatrixModuleModel(int model);

signals:
void getPAModeRequest();
void setPAModeRequest();
void getPowerLevelRequest();
void setPowerLevelRequest();

private:
QRadioButton *rbPAMode[2]; //!< Display PA Mode
QSpinBox *spnPowerLevel; //!< Display Power Level
QLabel *lbPowerLevel; //!< Display Power Level in dB
};

#endif // GRPTRANSMITTERPOWEROPTIONS_H



Code


#include "grptransmitterpoweroptions.h"

#include <QRadioButton>
#include <QSpinBox>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QSizePolicy>

GrpTransmitterPowerOptions::GrpTransmitterPowerOpt ions(QWidget *parent)
: QGroupBox(parent)
{
this->setTitle(tr("Transmitter Power Level"));
this->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);

// Widget
rbPAMode[0] = new QRadioButton(tr(" 1 mW ( 0 dBm)"), this);
rbPAMode[1] = new QRadioButton(tr("10 mW (10 dBm)"), this);

spnPowerLevel = new QSpinBox(this);
spnPowerLevel->setRange(0, 31);
spnPowerLevel->setValue(31);
spnPowerLevel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);

lbPowerLevel = new QLabel("10 dBm");

QPushButton *btGetPAMode = new QPushButton(tr("Get"), this);
btGetPAMode->setIcon(QIcon(":/icons/get.pns"));
btGetPAMode->setToolTip(tr("Get the PA Mode"));
btGetPAMode->setStatusTip(tr("Get the PA Mode from the Matrix Module"));
connect(btGetPAMode, SIGNAL(clicked()), this, SIGNAL(getPAModeRequest()));

QPushButton *btSetPAMode = new QPushButton(tr("Set"), this);
btSetPAMode->setIcon(QIcon(":/icons/set.pns"));
btSetPAMode->setToolTip(tr("Set the PA Mode"));
btSetPAMode->setStatusTip(tr("Set the PA Mode to the Matrix Module"));
connect(btSetPAMode, SIGNAL(clicked()), this, SIGNAL(setPAModeRequest()));

QPushButton *btGetPowerLevel = new QPushButton(tr("Get"), this);
btGetPowerLevel->setIcon(QIcon(":/icons/get.pns"));
btGetPowerLevel->setToolTip(tr("Get the Power Level"));
btGetPowerLevel->setStatusTip(tr("Get the Power Level from the Matrix Module"));
connect(btGetPowerLevel, SIGNAL(clicked()), this, SIGNAL(getPowerLevelRequest()));

QPushButton *btSetPowerLevel = new QPushButton(tr("Set"), this);
btSetPowerLevel->setIcon(QIcon(":/icons/set.pns"));
btSetPowerLevel->setToolTip(tr("Set the Power Level"));
btSetPowerLevel->setStatusTip(tr("Set the Power Level to the Matrix Module"));
connect(btSetPowerLevel, SIGNAL(clicked()), this, SIGNAL(setPowerLevelRequest()));

// Layout
QHBoxLayout *mainLayout = new QHBoxLayout;
QGroupBox *grpPAMode = new QGroupBox(this);
grpPAMode->setTitle(tr("PA Mode"));
grpPAMode->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
QGroupBox *grpPowerLevel = new QGroupBox(this);
grpPowerLevel->setTitle(tr("Power Level"));
grpPowerLevel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
mainLayout->addWidget(grpPAMode);
mainLayout->addWidget(grpPowerLevel);

QVBoxLayout *vboxPAMode = new QVBoxLayout;
QHBoxLayout *hboxPAModeButtons = new QHBoxLayout;
vboxPAMode->addWidget(rbPAMode[0]);
vboxPAMode->addWidget(rbPAMode[1]);
vboxPAMode->addLayout(hboxPAModeButtons);
grpPAMode->setLayout(vboxPAMode);
hboxPAModeButtons->addStretch(10);
hboxPAModeButtons->addWidget(btGetPAMode);
hboxPAModeButtons->addWidget(btSetPAMode);

QVBoxLayout *vboxPowerLevel = new QVBoxLayout;
QHBoxLayout *hboxPowerLevelValue = new QHBoxLayout;
QHBoxLayout *hboxPowerLevelButtons = new QHBoxLayout;
vboxPowerLevel->addStretch(10);
vboxPowerLevel->addLayout(hboxPowerLevelValue);
vboxPowerLevel->addStretch(10);
vboxPowerLevel->addLayout(hboxPowerLevelButtons);

hboxPowerLevelValue->addWidget(new QLabel(tr("Value:"), this));
hboxPowerLevelValue->addWidget(spnPowerLevel);
hboxPowerLevelValue->addWidget(lbPowerLevel);

hboxPowerLevelButtons->addStretch(10);
hboxPowerLevelButtons->addWidget(btGetPowerLevel);
hboxPowerLevelButtons->addWidget(btSetPowerLevel);

this->setLayout(mainLayout);
}

void GrpTransmitterPowerOptions::setMatrixModuleModel(i nt model)
{}

void GrpTransmitterPowerOptions::setPAMode(int paMode)
{}

int GrpTransmitterPowerOptions::getPAMode()
{}

void GrpTransmitterPowerOptions::setPowerLevel(int powerLevel)
{}

int GrpTransmitterPowerOptions::getPowerLevel()
{}

spirit
3rd August 2009, 17:23
try to clean project and then rebuild it.

PaceyIV
3rd August 2009, 17:27
I had already tried, same error.

I think I fix the error now when I manually run qmake.
Why in the first seven custom widget I haven't got this error?