Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. undefined reference to `Config::SingleLinkedList::staticMetaObject' and `vtable for Config::SingleLinkedList'
Forum Updated to NodeBB v4.3 + New Features

undefined reference to `Config::SingleLinkedList::staticMetaObject' and `vtable for Config::SingleLinkedList'

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 6 Posters 3.6k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • aha_1980A aha_1980

    @Limer said in undefined reference to `Config::SingleLinkedList::staticMetaObject' and `vtable for Config::SingleLinkedList':

    class ConfigBase : public QWidget, it has slots and signals, so Q_OBJECT is set in the code.

    Hello, is your class defined in a header or in a cpp file?

    If it's in a header file, try deleting the whole build folder (make sure there are no Makefiles left, neither in the source nor in the build folder).

    If the definition is in a cpp file, then you will have to include the generated .moc file your own by apppending something like #include "singlelinkedlist.moc" at the end of your cpp file.

    LimerL Offline
    LimerL Offline
    Limer
    wrote on last edited by
    #5

    @aha_1980

    In a heaer file. I tried, but it doesn`t work.

    1 Reply Last reply
    0
    • LimerL Limer

      class ConfigBase : public QWidget, it has slots and signals, so Q_OBJECT is set in the code.

      Now, class SingleLinkedList : public ConfigBase , it also has its own slots and signals, so Q_OBJECT is also set in the code. But i come across one problem.

      error: undefined reference to `Config::SingleLinkedList::staticMetaObject'

      error: undefined reference to `vtable for Config::SingleLinkedList'

      collect2.exe:-1: error: error: ld returned 1 exit status

      I googled many, but no use.

      If you want all the project(it is a little project, but is not convenient to public), leave your email !

      joeQJ Offline
      joeQJ Offline
      joeQ
      wrote on last edited by
      #6

      @Limer Hi, friend.

      1. Dot forget to add Q_OBJECT in head of class.
      2. run qmake again.

      If not Ok, you could show some code in your post.

      Just do it!

      LimerL 1 Reply Last reply
      0
      • joeQJ joeQ

        @Limer Hi, friend.

        1. Dot forget to add Q_OBJECT in head of class.
        2. run qmake again.

        If not Ok, you could show some code in your post.

        LimerL Offline
        LimerL Offline
        Limer
        wrote on last edited by
        #7

        @joeQ

        #ifndef CONFIG_BASE_H
        #define CONFIG_BASE_H
        
        #include <QPushButton>
        #include <QSlider>
        #include <QGridLayout>
        #include <QGroupBox>
        
        #define CONFIG_NAMESPACE_START namespace Config {
        #define CONFIG_NAMESPACE_END   }
        
        class ConfigBase : public QWidget
        {
            Q_OBJECT
        
        public:
            explicit ConfigBase(QWidget *parent = 0) : QWidget(parent)
            {
                groupBox1 = new QGroupBox(tr("Speed Control"));
                speedSlider = new QSlider(Qt::Horizontal, groupBox1);
                speedSlider->setMinimum(0);
                speedSlider->setMaximum(300);
                speedSlider->setValue(150);
                sliderLayout = new QVBoxLayout(groupBox1);
                sliderLayout->addWidget(speedSlider);
        
                groupBox2 = new QGroupBox(tr("Start && Pause"));
                startPushButton = new QPushButton(tr("Start"));
                pausePushButton = new QPushButton(tr("Pause"));
                resetPushButton = new QPushButton(tr("Reset"));
                startPushButton->setEnabled(true);
                pausePushButton->setEnabled(false);
                resetPushButton->setEnabled(false);
                pushButtonLayout = new QGridLayout(groupBox2);
                pushButtonLayout->addWidget(startPushButton, 0, 0, 1, 1);
                pushButtonLayout->addWidget(pausePushButton, 0, 1, 1, 1);
                pushButtonLayout->addWidget(resetPushButton, 1, 0, 1, 1);
        
                connect(startPushButton, SIGNAL(clicked(bool)), SLOT(start()));
                connect(pausePushButton, SIGNAL(clicked(bool)), SLOT(pause()));
                connect(resetPushButton, SIGNAL(clicked(bool)), SLOT(reset()));
            }
        
            ~ConfigBase()
            {}
        
        public slots:
            void start()
            {
                startPushButton->setEnabled(false);
                pausePushButton->setEnabled(true);
                emit comboBoxEnabled(false);
            }
        
            void pause()
            {
                if (pausePushButton->text() == QString(QObject::tr("Pause")))
                {
                    pausePushButton->setText(QObject::tr("Continue"));
                    resetPushButton->setEnabled(true);
                    emit comboBoxEnabled(true);
                }
                else
                {
                    pausePushButton->setText(QObject::tr("Pause"));
                    resetPushButton->setEnabled(false);
                    emit comboBoxEnabled(false);
                }
            }
        
            void reset()
            {
                pausePushButton->setText(QObject::tr("Pause"));
                startPushButton->setEnabled(true);
                pausePushButton->setEnabled(false);
                resetPushButton->setEnabled(false);
                speedSlider->setValue(150);
                emit comboBoxEnabled(true);
            }
        
        signals:
            void comboBoxEnabled(bool);
        
        public:
            QPushButton *startPushButton;
            QPushButton *pausePushButton;
            QPushButton *resetPushButton;
            QSlider     *speedSlider;
        
        protected:
            QGroupBox   *groupBox1;
            QGroupBox   *groupBox2;
        
        private:
            QVBoxLayout *sliderLayout;
            QGridLayout *pushButtonLayout;
        };
        
        #endif // CONFIG_BASE_H
        
        
        #ifndef CONFIG_SINGLE_LINKED_LIST
        #define CONFIG_SINGLE_LINKED_LIST
        
        #include <QCheckBox>
        #include <QSpinBox>
        #include <QTabWidget>
        #include <QTextEdit>
        #include "config_base.h"
        
        CONFIG_NAMESPACE_START
        
        class SingleLinkedList : public ConfigBase
        {
            Q_OBJECT
        
        public:
            explicit SingleLinkedList(ConfigBase *parent = 0) : ConfigBase(parent)
            {
                delete groupBox1;
                startPushButton->setEnabled(false);
        
                insertWidget      = new QWidget;
                insertPosGroupBox = new QGroupBox(tr("Position"));
                insertKeyGroupBox = new QGroupBox(tr("Key"));
                headCheckBox1     = new QCheckBox(tr("head"));
                tailCheckBox1     = new QCheckBox(tr("tail"));
                keyTextEdit1      = new QTextEdit;
                customSpinBox1    = new QSpinBox;
                keyTextEdit1->setPlaceholderText(tr("key text edit"));
                customSpinBox1->setRange(2, 10);
                QHBoxLayout *hBoxLayout1 = new QHBoxLayout(insertPosGroupBox);
                hBoxLayout1->addWidget(headCheckBox1);
                hBoxLayout1->addWidget(tailCheckBox1);
                hBoxLayout1->addWidget(customSpinBox1);
                QHBoxLayout *hBoxLayout2 = new QHBoxLayout(insertKeyGroupBox);
                hBoxLayout2->addWidget(keyTextEdit1);
                QVBoxLayout *vBoxLayout1 = new QVBoxLayout(insertWidget);
                vBoxLayout1->addWidget(insertPosGroupBox);
                vBoxLayout1->addWidget(insertKeyGroupBox);
                vBoxLayout1->setSpacing(20);
        
                findWidget       = new QWidget;
                findKeyGroupBox  = new QGroupBox(tr("Key"));
                keyTextEdit2     = new QTextEdit;
                keyTextEdit2->setPlaceholderText(tr("key text edit"));
                QHBoxLayout *hBoxLayout3 = new QHBoxLayout(findKeyGroupBox);
                hBoxLayout3->addWidget(keyTextEdit2);
                QVBoxLayout *vBoxLayout2 = new QVBoxLayout(findWidget);
                vBoxLayout2->addWidget(findKeyGroupBox);
        
                removeWidget      = new QWidget;
                removePosGroupBox = new QGroupBox(tr("By Position"));
                removekeyGroupBox = new QGroupBox(tr("or By Key"));
                headCheckBox3     = new QCheckBox(tr("head"));
                tailCheckBox3     = new QCheckBox(tr("tail"));
                customSpinBox3    = new QSpinBox;
                keyTextEdit3      = new QTextEdit;
                customSpinBox3->setRange(2, 10);
                keyTextEdit3->setPlaceholderText(tr("text edit"));
                QHBoxLayout *hBoxLayout4 = new QHBoxLayout(removePosGroupBox);
                hBoxLayout4->addWidget(headCheckBox3);
                hBoxLayout4->addWidget(tailCheckBox3);
                hBoxLayout4->addWidget(customSpinBox3);
                QHBoxLayout *hBoxLayout5 = new QHBoxLayout(removekeyGroupBox);
                hBoxLayout5->addWidget(keyTextEdit3);
                QVBoxLayout *vBoxLayout3 = new QVBoxLayout(removeWidget);
                vBoxLayout3->addWidget(removePosGroupBox);
                vBoxLayout3->addWidget(removekeyGroupBox);
                vBoxLayout3->setSpacing(20);
        
                tabWidget = new QTabWidget;
                tabWidget->addTab(insertWidget, tr("Insert"));
                tabWidget->addTab(findWidget, tr("Find"));
                tabWidget->addTab(removeWidget, tr("Remove"));
        
                mainVBoxLayout = new QVBoxLayout(this);
                mainVBoxLayout->addWidget(tabWidget);
                mainVBoxLayout->addWidget(groupBox2);
                mainVBoxLayout->setSpacing(30);
        
                connect(headCheckBox1, SIGNAL(stateChanged(int)), this, SLOT(slot1(int)));
                connect(tailCheckBox1, SIGNAL(stateChanged(int)), SLOT(slot2(int)));
                connect(headCheckBox3, SIGNAL(stateChanged(int)), SLOT(slot3(int)));
                connect(tailCheckBox3, SIGNAL(stateChanged(int)), SLOT(slot4(int)));
                connect(tabWidget, SIGNAL(currentChanged(int)), SLOT(tabChangedReset(int)));
        
            }
        
            ~SingleLinkedList()
            {}
        
        public slots:
            void slot1(int state)
            {
                if (state == Qt::Checked)
                {
                    tailCheckBox1->setCheckState(Qt::Unchecked);
                    customSpinBox1->setValue(2);
                    tailCheckBox1->setEnabled(false);
                    customSpinBox1->setEnabled(false);
                }
                else
                {
                    tailCheckBox1->setEnabled(true);
                    customSpinBox1->setEnabled(true);
                }
            }
        
            void slot2(int state)
            {
                if (state == Qt::Checked)
                {
                    headCheckBox1->setCheckState(Qt::Unchecked);
                    customSpinBox1->setValue(2);
                    headCheckBox1->setEnabled(false);
                    customSpinBox1->setEnabled(false);
                }
                else
                {
                    headCheckBox1->setEnabled(true);
                    customSpinBox1->setEnabled(true);
                }
            }
        
            void slot3(int state)
            {
                if (state == Qt::Checked)
                {
                    tailCheckBox3->setCheckState(Qt::Unchecked);
                    customSpinBox3->setValue(2);
                    tailCheckBox3->setEnabled(false);
                    customSpinBox3->setEnabled(false);
                }
                else
                {
                    tailCheckBox3->setEnabled(true);
                    customSpinBox3->setEnabled(true);
                }
            }
        
            void slot4(int state)
            {
                if (state == Qt::Checked)
                {
                    headCheckBox3->setCheckState(Qt::Unchecked);
                    customSpinBox3->setValue(2);
                    headCheckBox3->setEnabled(false);
                    customSpinBox3->setEnabled(false);
                }
                else
                {
                    headCheckBox3->setEnabled(true);
                    customSpinBox3->setEnabled(true);
                }
            }
        
            void insertWidgetReset()
            {
                headCheckBox1->setCheckState(Qt::Unchecked);
                tailCheckBox1->setCheckState(Qt::Unchecked);
                customSpinBox1->setValue(2);
                headCheckBox1->setEnabled(true);
                tailCheckBox1->setEnabled(true);
                customSpinBox1->setEnabled(true);
                keyTextEdit1->clear();
            }
        
            void findWidgetReset()
            {
                keyTextEdit2->clear();
            }
        
            void removeWidgetReset()
            {
                headCheckBox3->setCheckState(Qt::Unchecked);
                tailCheckBox3->setCheckState(Qt::Unchecked);
                customSpinBox3->setValue(2);
                headCheckBox3->setEnabled(true);
                tailCheckBox3->setEnabled(true);
                customSpinBox3->setEnabled(true);
                keyTextEdit3->clear();
            }
        
            void tabChangedReset(int index)
            {
                startPushButton->setEnabled(false);
        
                switch (index)
                {
                case 0:
                    insertWidgetReset();
                    break;
                case 1:
                    findWidgetReset();
                    break;
                case 2:
                    removeWidgetReset();
                    break;
                }
            }
        
            void resetAll()
            {
                //insertWidgetReset(); //  jian cha yi xia
                findWidgetReset();
                removeWidgetReset();
                tabWidget->setCurrentIndex(0);
        
                reset();
                startPushButton->setEnabled(false);
            }
        
        private:
            QVBoxLayout *mainVBoxLayout;
        
            QTabWidget  *tabWidget;
            QWidget     *insertWidget;
            QWidget     *findWidget;
            QWidget     *removeWidget;
        
            QGroupBox   *insertPosGroupBox;
            QGroupBox   *insertKeyGroupBox;
            QCheckBox   *headCheckBox1;
            QCheckBox   *tailCheckBox1;
            QSpinBox    *customSpinBox1;
            QTextEdit   *keyTextEdit1;
        
            QGroupBox   *findKeyGroupBox;
            QTextEdit   *keyTextEdit2;
        
            QGroupBox   *removePosGroupBox;
            QGroupBox   *removekeyGroupBox;
            QCheckBox   *headCheckBox3;
            QCheckBox   *tailCheckBox3;
            QSpinBox    *customSpinBox3;
            QTextEdit   *keyTextEdit3;
        };
        
        CONFIG_NAMESPACE_END
        
        #endif // CONFIG_SINGLE_LINKED_LIST
        
        
        joeQJ 1 Reply Last reply
        0
        • LimerL Limer

          @joeQ

          #ifndef CONFIG_BASE_H
          #define CONFIG_BASE_H
          
          #include <QPushButton>
          #include <QSlider>
          #include <QGridLayout>
          #include <QGroupBox>
          
          #define CONFIG_NAMESPACE_START namespace Config {
          #define CONFIG_NAMESPACE_END   }
          
          class ConfigBase : public QWidget
          {
              Q_OBJECT
          
          public:
              explicit ConfigBase(QWidget *parent = 0) : QWidget(parent)
              {
                  groupBox1 = new QGroupBox(tr("Speed Control"));
                  speedSlider = new QSlider(Qt::Horizontal, groupBox1);
                  speedSlider->setMinimum(0);
                  speedSlider->setMaximum(300);
                  speedSlider->setValue(150);
                  sliderLayout = new QVBoxLayout(groupBox1);
                  sliderLayout->addWidget(speedSlider);
          
                  groupBox2 = new QGroupBox(tr("Start && Pause"));
                  startPushButton = new QPushButton(tr("Start"));
                  pausePushButton = new QPushButton(tr("Pause"));
                  resetPushButton = new QPushButton(tr("Reset"));
                  startPushButton->setEnabled(true);
                  pausePushButton->setEnabled(false);
                  resetPushButton->setEnabled(false);
                  pushButtonLayout = new QGridLayout(groupBox2);
                  pushButtonLayout->addWidget(startPushButton, 0, 0, 1, 1);
                  pushButtonLayout->addWidget(pausePushButton, 0, 1, 1, 1);
                  pushButtonLayout->addWidget(resetPushButton, 1, 0, 1, 1);
          
                  connect(startPushButton, SIGNAL(clicked(bool)), SLOT(start()));
                  connect(pausePushButton, SIGNAL(clicked(bool)), SLOT(pause()));
                  connect(resetPushButton, SIGNAL(clicked(bool)), SLOT(reset()));
              }
          
              ~ConfigBase()
              {}
          
          public slots:
              void start()
              {
                  startPushButton->setEnabled(false);
                  pausePushButton->setEnabled(true);
                  emit comboBoxEnabled(false);
              }
          
              void pause()
              {
                  if (pausePushButton->text() == QString(QObject::tr("Pause")))
                  {
                      pausePushButton->setText(QObject::tr("Continue"));
                      resetPushButton->setEnabled(true);
                      emit comboBoxEnabled(true);
                  }
                  else
                  {
                      pausePushButton->setText(QObject::tr("Pause"));
                      resetPushButton->setEnabled(false);
                      emit comboBoxEnabled(false);
                  }
              }
          
              void reset()
              {
                  pausePushButton->setText(QObject::tr("Pause"));
                  startPushButton->setEnabled(true);
                  pausePushButton->setEnabled(false);
                  resetPushButton->setEnabled(false);
                  speedSlider->setValue(150);
                  emit comboBoxEnabled(true);
              }
          
          signals:
              void comboBoxEnabled(bool);
          
          public:
              QPushButton *startPushButton;
              QPushButton *pausePushButton;
              QPushButton *resetPushButton;
              QSlider     *speedSlider;
          
          protected:
              QGroupBox   *groupBox1;
              QGroupBox   *groupBox2;
          
          private:
              QVBoxLayout *sliderLayout;
              QGridLayout *pushButtonLayout;
          };
          
          #endif // CONFIG_BASE_H
          
          
          #ifndef CONFIG_SINGLE_LINKED_LIST
          #define CONFIG_SINGLE_LINKED_LIST
          
          #include <QCheckBox>
          #include <QSpinBox>
          #include <QTabWidget>
          #include <QTextEdit>
          #include "config_base.h"
          
          CONFIG_NAMESPACE_START
          
          class SingleLinkedList : public ConfigBase
          {
              Q_OBJECT
          
          public:
              explicit SingleLinkedList(ConfigBase *parent = 0) : ConfigBase(parent)
              {
                  delete groupBox1;
                  startPushButton->setEnabled(false);
          
                  insertWidget      = new QWidget;
                  insertPosGroupBox = new QGroupBox(tr("Position"));
                  insertKeyGroupBox = new QGroupBox(tr("Key"));
                  headCheckBox1     = new QCheckBox(tr("head"));
                  tailCheckBox1     = new QCheckBox(tr("tail"));
                  keyTextEdit1      = new QTextEdit;
                  customSpinBox1    = new QSpinBox;
                  keyTextEdit1->setPlaceholderText(tr("key text edit"));
                  customSpinBox1->setRange(2, 10);
                  QHBoxLayout *hBoxLayout1 = new QHBoxLayout(insertPosGroupBox);
                  hBoxLayout1->addWidget(headCheckBox1);
                  hBoxLayout1->addWidget(tailCheckBox1);
                  hBoxLayout1->addWidget(customSpinBox1);
                  QHBoxLayout *hBoxLayout2 = new QHBoxLayout(insertKeyGroupBox);
                  hBoxLayout2->addWidget(keyTextEdit1);
                  QVBoxLayout *vBoxLayout1 = new QVBoxLayout(insertWidget);
                  vBoxLayout1->addWidget(insertPosGroupBox);
                  vBoxLayout1->addWidget(insertKeyGroupBox);
                  vBoxLayout1->setSpacing(20);
          
                  findWidget       = new QWidget;
                  findKeyGroupBox  = new QGroupBox(tr("Key"));
                  keyTextEdit2     = new QTextEdit;
                  keyTextEdit2->setPlaceholderText(tr("key text edit"));
                  QHBoxLayout *hBoxLayout3 = new QHBoxLayout(findKeyGroupBox);
                  hBoxLayout3->addWidget(keyTextEdit2);
                  QVBoxLayout *vBoxLayout2 = new QVBoxLayout(findWidget);
                  vBoxLayout2->addWidget(findKeyGroupBox);
          
                  removeWidget      = new QWidget;
                  removePosGroupBox = new QGroupBox(tr("By Position"));
                  removekeyGroupBox = new QGroupBox(tr("or By Key"));
                  headCheckBox3     = new QCheckBox(tr("head"));
                  tailCheckBox3     = new QCheckBox(tr("tail"));
                  customSpinBox3    = new QSpinBox;
                  keyTextEdit3      = new QTextEdit;
                  customSpinBox3->setRange(2, 10);
                  keyTextEdit3->setPlaceholderText(tr("text edit"));
                  QHBoxLayout *hBoxLayout4 = new QHBoxLayout(removePosGroupBox);
                  hBoxLayout4->addWidget(headCheckBox3);
                  hBoxLayout4->addWidget(tailCheckBox3);
                  hBoxLayout4->addWidget(customSpinBox3);
                  QHBoxLayout *hBoxLayout5 = new QHBoxLayout(removekeyGroupBox);
                  hBoxLayout5->addWidget(keyTextEdit3);
                  QVBoxLayout *vBoxLayout3 = new QVBoxLayout(removeWidget);
                  vBoxLayout3->addWidget(removePosGroupBox);
                  vBoxLayout3->addWidget(removekeyGroupBox);
                  vBoxLayout3->setSpacing(20);
          
                  tabWidget = new QTabWidget;
                  tabWidget->addTab(insertWidget, tr("Insert"));
                  tabWidget->addTab(findWidget, tr("Find"));
                  tabWidget->addTab(removeWidget, tr("Remove"));
          
                  mainVBoxLayout = new QVBoxLayout(this);
                  mainVBoxLayout->addWidget(tabWidget);
                  mainVBoxLayout->addWidget(groupBox2);
                  mainVBoxLayout->setSpacing(30);
          
                  connect(headCheckBox1, SIGNAL(stateChanged(int)), this, SLOT(slot1(int)));
                  connect(tailCheckBox1, SIGNAL(stateChanged(int)), SLOT(slot2(int)));
                  connect(headCheckBox3, SIGNAL(stateChanged(int)), SLOT(slot3(int)));
                  connect(tailCheckBox3, SIGNAL(stateChanged(int)), SLOT(slot4(int)));
                  connect(tabWidget, SIGNAL(currentChanged(int)), SLOT(tabChangedReset(int)));
          
              }
          
              ~SingleLinkedList()
              {}
          
          public slots:
              void slot1(int state)
              {
                  if (state == Qt::Checked)
                  {
                      tailCheckBox1->setCheckState(Qt::Unchecked);
                      customSpinBox1->setValue(2);
                      tailCheckBox1->setEnabled(false);
                      customSpinBox1->setEnabled(false);
                  }
                  else
                  {
                      tailCheckBox1->setEnabled(true);
                      customSpinBox1->setEnabled(true);
                  }
              }
          
              void slot2(int state)
              {
                  if (state == Qt::Checked)
                  {
                      headCheckBox1->setCheckState(Qt::Unchecked);
                      customSpinBox1->setValue(2);
                      headCheckBox1->setEnabled(false);
                      customSpinBox1->setEnabled(false);
                  }
                  else
                  {
                      headCheckBox1->setEnabled(true);
                      customSpinBox1->setEnabled(true);
                  }
              }
          
              void slot3(int state)
              {
                  if (state == Qt::Checked)
                  {
                      tailCheckBox3->setCheckState(Qt::Unchecked);
                      customSpinBox3->setValue(2);
                      tailCheckBox3->setEnabled(false);
                      customSpinBox3->setEnabled(false);
                  }
                  else
                  {
                      tailCheckBox3->setEnabled(true);
                      customSpinBox3->setEnabled(true);
                  }
              }
          
              void slot4(int state)
              {
                  if (state == Qt::Checked)
                  {
                      headCheckBox3->setCheckState(Qt::Unchecked);
                      customSpinBox3->setValue(2);
                      headCheckBox3->setEnabled(false);
                      customSpinBox3->setEnabled(false);
                  }
                  else
                  {
                      headCheckBox3->setEnabled(true);
                      customSpinBox3->setEnabled(true);
                  }
              }
          
              void insertWidgetReset()
              {
                  headCheckBox1->setCheckState(Qt::Unchecked);
                  tailCheckBox1->setCheckState(Qt::Unchecked);
                  customSpinBox1->setValue(2);
                  headCheckBox1->setEnabled(true);
                  tailCheckBox1->setEnabled(true);
                  customSpinBox1->setEnabled(true);
                  keyTextEdit1->clear();
              }
          
              void findWidgetReset()
              {
                  keyTextEdit2->clear();
              }
          
              void removeWidgetReset()
              {
                  headCheckBox3->setCheckState(Qt::Unchecked);
                  tailCheckBox3->setCheckState(Qt::Unchecked);
                  customSpinBox3->setValue(2);
                  headCheckBox3->setEnabled(true);
                  tailCheckBox3->setEnabled(true);
                  customSpinBox3->setEnabled(true);
                  keyTextEdit3->clear();
              }
          
              void tabChangedReset(int index)
              {
                  startPushButton->setEnabled(false);
          
                  switch (index)
                  {
                  case 0:
                      insertWidgetReset();
                      break;
                  case 1:
                      findWidgetReset();
                      break;
                  case 2:
                      removeWidgetReset();
                      break;
                  }
              }
          
              void resetAll()
              {
                  //insertWidgetReset(); //  jian cha yi xia
                  findWidgetReset();
                  removeWidgetReset();
                  tabWidget->setCurrentIndex(0);
          
                  reset();
                  startPushButton->setEnabled(false);
              }
          
          private:
              QVBoxLayout *mainVBoxLayout;
          
              QTabWidget  *tabWidget;
              QWidget     *insertWidget;
              QWidget     *findWidget;
              QWidget     *removeWidget;
          
              QGroupBox   *insertPosGroupBox;
              QGroupBox   *insertKeyGroupBox;
              QCheckBox   *headCheckBox1;
              QCheckBox   *tailCheckBox1;
              QSpinBox    *customSpinBox1;
              QTextEdit   *keyTextEdit1;
          
              QGroupBox   *findKeyGroupBox;
              QTextEdit   *keyTextEdit2;
          
              QGroupBox   *removePosGroupBox;
              QGroupBox   *removekeyGroupBox;
              QCheckBox   *headCheckBox3;
              QCheckBox   *tailCheckBox3;
              QSpinBox    *customSpinBox3;
              QTextEdit   *keyTextEdit3;
          };
          
          CONFIG_NAMESPACE_END
          
          #endif // CONFIG_SINGLE_LINKED_LIST
          
          
          joeQJ Offline
          joeQJ Offline
          joeQ
          wrote on last edited by
          #8

          @Limer

          Try include QWidget in ConfigBase head file.
          and Try include QObject in SingleLinkedList head file.

          run qmake again.

          Just do it!

          LimerL 1 Reply Last reply
          1
          • mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by mrjj
            #9

            Hi
            The code is fine. Compiles here.
            So if still complaining, then completely delete the build folder.

            alt text

            LimerL 1 Reply Last reply
            0
            • joeQJ joeQ

              @Limer

              Try include QWidget in ConfigBase head file.
              and Try include QObject in SingleLinkedList head file.

              run qmake again.

              LimerL Offline
              LimerL Offline
              Limer
              wrote on last edited by Limer
              #10

              @joeQ

              I tried, failed. this is all project : https://pan.baidu.com/s/1c2hNztm

              1 Reply Last reply
              0
              • mrjjM mrjj

                Hi
                The code is fine. Compiles here.
                So if still complaining, then completely delete the build folder.

                alt text

                LimerL Offline
                LimerL Offline
                Limer
                wrote on last edited by Limer
                #11

                @mrjj

                I had deleted all build* file, but failed again and same errors. this is all project : https://pan.baidu.com/s/1c2hNztm

                1 Reply Last reply
                0
                • Paul ColbyP Offline
                  Paul ColbyP Offline
                  Paul Colby
                  wrote on last edited by
                  #12

                  Hi @Limer,

                  The problem appears to be that you have two SingleLinkedList classes. Although they are in two separate namespaces, for whatever reason (not sure its a bug, or a known limitation), QMake is only producing a moc file for one of them - if you rename either source file, the moc will be for the other.

                  I'd suggest you rename one of those classes.

                  Cheers.

                  1 Reply Last reply
                  3
                  • mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by mrjj
                    #13

                    Hi
                    You have the file single_linked_list.h in two folders
                    moc seems them as one
                    NMAKE:-1: warning: U4004: too many rules for target 'debug\moc_single_linked_list.cpp'

                    so rename one of the files and it works. you can do it directly in project explorer and all
                    is changed correctly.

                    alt text

                    alt text

                    ahh @Paul-Colby beat me to it :)

                    LimerL 1 Reply Last reply
                    4
                    • mrjjM mrjj

                      Hi
                      You have the file single_linked_list.h in two folders
                      moc seems them as one
                      NMAKE:-1: warning: U4004: too many rules for target 'debug\moc_single_linked_list.cpp'

                      so rename one of the files and it works. you can do it directly in project explorer and all
                      is changed correctly.

                      alt text

                      alt text

                      ahh @Paul-Colby beat me to it :)

                      LimerL Offline
                      LimerL Offline
                      Limer
                      wrote on last edited by
                      #14

                      @mrjj @Paul Colby

                      Thanks, it`s ok!

                      1 Reply Last reply
                      2

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved