Results 1 to 3 of 3

Thread: undefined reference to `vtable for MyClass' [SOLVED]

  1. #1
    Join Date
    Mar 2009
    Posts
    98
    Thanks
    3
    Thanked 9 Times in 9 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default undefined reference to `vtable for MyClass' [SOLVED]

    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
    Qt Code:
    1. #ifndef GRPTRANSMITTERPOWEROPTIONS_H
    2. #define GRPTRANSMITTERPOWEROPTIONS_H
    3.  
    4. #include <QGroupBox>
    5. QT_FORWARD_DECLARE_CLASS(QRadioButton);
    6. QT_FORWARD_DECLARE_CLASS(QSpinBox);
    7. QT_FORWARD_DECLARE_CLASS(QLabel);
    8.  
    9. class GrpTransmitterPowerOptions : public QGroupBox
    10. {
    11. Q_OBJECT
    12.  
    13. public:
    14. GrpTransmitterPowerOptions(QWidget *parent = 0);
    15.  
    16. int getPAMode();
    17. int getPowerLevel();
    18.  
    19. public slots:
    20. void setPAMode(int paMode);
    21. void setPowerLevel(int powerLevel);
    22. void setMatrixModuleModel(int model);
    23.  
    24. signals:
    25. void getPAModeRequest();
    26. void setPAModeRequest();
    27. void getPowerLevelRequest();
    28. void setPowerLevelRequest();
    29.  
    30. private:
    31. QRadioButton *rbPAMode[2]; //!< Display PA Mode
    32. QSpinBox *spnPowerLevel; //!< Display Power Level
    33. QLabel *lbPowerLevel; //!< Display Power Level in dB
    34. };
    35.  
    36. #endif // GRPTRANSMITTERPOWEROPTIONS_H
    To copy to clipboard, switch view to plain text mode 

    Code
    Qt Code:
    1. #include "grptransmitterpoweroptions.h"
    2.  
    3. #include <QRadioButton>
    4. #include <QSpinBox>
    5. #include <QLabel>
    6. #include <QPushButton>
    7. #include <QHBoxLayout>
    8. #include <QVBoxLayout>
    9. #include <QSizePolicy>
    10.  
    11. GrpTransmitterPowerOptions::GrpTransmitterPowerOptions(QWidget *parent)
    12. : QGroupBox(parent)
    13. {
    14. this->setTitle(tr("Transmitter Power Level"));
    15. this->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    16.  
    17. // Widget
    18. rbPAMode[0] = new QRadioButton(tr(" 1 mW ( 0 dBm)"), this);
    19. rbPAMode[1] = new QRadioButton(tr("10 mW (10 dBm)"), this);
    20.  
    21. spnPowerLevel = new QSpinBox(this);
    22. spnPowerLevel->setRange(0, 31);
    23. spnPowerLevel->setValue(31);
    24. spnPowerLevel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    25.  
    26. lbPowerLevel = new QLabel("10 dBm");
    27.  
    28. QPushButton *btGetPAMode = new QPushButton(tr("Get"), this);
    29. btGetPAMode->setIcon(QIcon(":/icons/get.pns"));
    30. btGetPAMode->setToolTip(tr("Get the PA Mode"));
    31. btGetPAMode->setStatusTip(tr("Get the PA Mode from the Matrix Module"));
    32. connect(btGetPAMode, SIGNAL(clicked()), this, SIGNAL(getPAModeRequest()));
    33.  
    34. QPushButton *btSetPAMode = new QPushButton(tr("Set"), this);
    35. btSetPAMode->setIcon(QIcon(":/icons/set.pns"));
    36. btSetPAMode->setToolTip(tr("Set the PA Mode"));
    37. btSetPAMode->setStatusTip(tr("Set the PA Mode to the Matrix Module"));
    38. connect(btSetPAMode, SIGNAL(clicked()), this, SIGNAL(setPAModeRequest()));
    39.  
    40. QPushButton *btGetPowerLevel = new QPushButton(tr("Get"), this);
    41. btGetPowerLevel->setIcon(QIcon(":/icons/get.pns"));
    42. btGetPowerLevel->setToolTip(tr("Get the Power Level"));
    43. btGetPowerLevel->setStatusTip(tr("Get the Power Level from the Matrix Module"));
    44. connect(btGetPowerLevel, SIGNAL(clicked()), this, SIGNAL(getPowerLevelRequest()));
    45.  
    46. QPushButton *btSetPowerLevel = new QPushButton(tr("Set"), this);
    47. btSetPowerLevel->setIcon(QIcon(":/icons/set.pns"));
    48. btSetPowerLevel->setToolTip(tr("Set the Power Level"));
    49. btSetPowerLevel->setStatusTip(tr("Set the Power Level to the Matrix Module"));
    50. connect(btSetPowerLevel, SIGNAL(clicked()), this, SIGNAL(setPowerLevelRequest()));
    51.  
    52. // Layout
    53. QHBoxLayout *mainLayout = new QHBoxLayout;
    54. QGroupBox *grpPAMode = new QGroupBox(this);
    55. grpPAMode->setTitle(tr("PA Mode"));
    56. grpPAMode->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    57. QGroupBox *grpPowerLevel = new QGroupBox(this);
    58. grpPowerLevel->setTitle(tr("Power Level"));
    59. grpPowerLevel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    60. mainLayout->addWidget(grpPAMode);
    61. mainLayout->addWidget(grpPowerLevel);
    62.  
    63. QVBoxLayout *vboxPAMode = new QVBoxLayout;
    64. QHBoxLayout *hboxPAModeButtons = new QHBoxLayout;
    65. vboxPAMode->addWidget(rbPAMode[0]);
    66. vboxPAMode->addWidget(rbPAMode[1]);
    67. vboxPAMode->addLayout(hboxPAModeButtons);
    68. grpPAMode->setLayout(vboxPAMode);
    69. hboxPAModeButtons->addStretch(10);
    70. hboxPAModeButtons->addWidget(btGetPAMode);
    71. hboxPAModeButtons->addWidget(btSetPAMode);
    72.  
    73. QVBoxLayout *vboxPowerLevel = new QVBoxLayout;
    74. QHBoxLayout *hboxPowerLevelValue = new QHBoxLayout;
    75. QHBoxLayout *hboxPowerLevelButtons = new QHBoxLayout;
    76. vboxPowerLevel->addStretch(10);
    77. vboxPowerLevel->addLayout(hboxPowerLevelValue);
    78. vboxPowerLevel->addStretch(10);
    79. vboxPowerLevel->addLayout(hboxPowerLevelButtons);
    80.  
    81. hboxPowerLevelValue->addWidget(new QLabel(tr("Value:"), this));
    82. hboxPowerLevelValue->addWidget(spnPowerLevel);
    83. hboxPowerLevelValue->addWidget(lbPowerLevel);
    84.  
    85. hboxPowerLevelButtons->addStretch(10);
    86. hboxPowerLevelButtons->addWidget(btGetPowerLevel);
    87. hboxPowerLevelButtons->addWidget(btSetPowerLevel);
    88.  
    89. this->setLayout(mainLayout);
    90. }
    91.  
    92. void GrpTransmitterPowerOptions::setMatrixModuleModel(int model)
    93. {}
    94.  
    95. void GrpTransmitterPowerOptions::setPAMode(int paMode)
    96. {}
    97.  
    98. int GrpTransmitterPowerOptions::getPAMode()
    99. {}
    100.  
    101. void GrpTransmitterPowerOptions::setPowerLevel(int powerLevel)
    102. {}
    103.  
    104. int GrpTransmitterPowerOptions::getPowerLevel()
    105. {}
    To copy to clipboard, switch view to plain text mode 
    Last edited by PaceyIV; 3rd August 2009 at 16:28. Reason: problem solved

  2. #2
    Join Date
    Aug 2008
    Location
    Ukraine, Krivoy Rog
    Posts
    1,963
    Thanked 370 Times in 336 Posts
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows

    Default Re: undefined reference to `vtable for MyClass'

    try to clean project and then rebuild it.
    Qt Assistant -- rocks!
    please, use tags [CODE] & [/CODE].

  3. #3
    Join Date
    Mar 2009
    Posts
    98
    Thanks
    3
    Thanked 9 Times in 9 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: undefined reference to `vtable for MyClass'

    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?

Similar Threads

  1. xerces - undefined reference
    By eleanor in forum General Programming
    Replies: 3
    Last Post: 27th April 2009, 13:16
  2. how to add static library into qmake
    By Namrata in forum Qt Tools
    Replies: 1
    Last Post: 20th November 2007, 17:33
  3. MS Sql native driver??
    By LordQt in forum Qt Programming
    Replies: 4
    Last Post: 9th October 2007, 13:41
  4. error undefined reference ...............
    By amit_pansuria in forum Qt Programming
    Replies: 2
    Last Post: 8th June 2007, 14:28
  5. how to correctly compile threads support?
    By srhlefty in forum Installation and Deployment
    Replies: 9
    Last Post: 25th June 2006, 19:15

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.