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. error: type 'QObject' is not a direct base of 'MyThread'
QtWS25 Last Chance

error: type 'QObject' is not a direct base of 'MyThread'

Scheduled Pinned Locked Moved Unsolved General and Desktop
threadqobjectmainwindow
11 Posts 3 Posters 3.2k Views
  • 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.
  • Christian EhrlicherC Offline
    Christian EhrlicherC Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on last edited by
    #2

    'QObject' is not a direct base of 'MyThread'

    And what do you don't understand here? The message explicitly tells you what's wrong. MyThread doesn't directly derive from QObject...

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    2
    • D deleted286

      I have an error on the

      MyThread::MyThread(QObject* parent)
         : QObject(parent) ///Here is an error 
      {
         
      }
      
      

      Could someone tell me where I've gone wrong - thanks!

      mythread.cpp

      #include "mythread.h"
      #include "mainwindow.h"
      #include <QtCore>
      #include <QDebug>
      #include <QFile>
      #include <QTimer>
      #include <QThread>
      #include <QMutex>
      #include <QQueue>
      #include <QMessageBox>
      #include <QApplication>
      #include <QtWidgets/QApplication>
      #include <QtWidgets/QMainWindow>
      #include <QFileDialog>
      #include <QMainWindow>
      
      MyThread::MyThread(QObject* parent)
          : QObject(parent)
      {
          
      }
      
      MyThread::~MyThread() {
      
      }
      
      void MyThread::writeData()
      {
      
      ....
          emit writingDone();
      }
      
      
      void MyThread::run()  //Reading file from txt with thread1
      {
          ...
      }
      

      mainwindow.cpp

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include <QtWidgets/QMainWindow>
      #include <QMainWindow>
      
      MainWindow::MainWindow(QWidget *parent)
          : QMainWindow(parent)
      {
          ui->setupUi(this);
      
          // Initialize the new objects
          myThreadObject = new MyThread();
          myQThread = new QThread();
      
          // Move to new thread
          myThreadObject->moveToThread(myQThread);
      
          // connect signal and slots
          connect(this, &MainWindow::startWriting, myThreadObject, &MyThread::writeData);
          connect(myThreadObject, &MyThread::writingDone, this, &MainWindow::writingDoneByThread);
      
          // Start the new thread
          myQThread->start();
      }
      
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #3

      @suslucoder
      Show your declaration of class MyThread in mythread.h.

      D 1 Reply Last reply
      0
      • JonBJ JonB

        @suslucoder
        Show your declaration of class MyThread in mythread.h.

        D Offline
        D Offline
        deleted286
        wrote on last edited by
        #4

        @JonB

        #define MYTHREAD_H
        #include <QtCore>
        #include <QMainWindow>
        #include <QObject>
        #include <QWidget>
        #include <QQueue>
        #include <QMutex>
        
        class MyThread: public QThread
        {
            Q_OBJECT
        
        public:
            MyThread(QObject* parent =nullptr);
            ~MyThread();
        
        signals:
            void writingDone(); //signal for main thread
        
        public slots:
            void writeData(); // this slot ask the thread to write data
        
            void run();
        
        
        private:
            QQueue<double> queue;
        };
        
        #endif // MYTHREAD_H
        
        1 Reply Last reply
        0
        • Christian EhrlicherC Offline
          Christian EhrlicherC Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on last edited by
          #5

          @suslucoder said in error: type 'QObject' is not a direct base of 'MyThread':

          class MyThread: public QThread

          Exactly what the error message told you...
          No need to derive from QThread here at all btw.

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          D 1 Reply Last reply
          0
          • Christian EhrlicherC Christian Ehrlicher

            @suslucoder said in error: type 'QObject' is not a direct base of 'MyThread':

            class MyThread: public QThread

            Exactly what the error message told you...
            No need to derive from QThread here at all btw.

            D Offline
            D Offline
            deleted286
            wrote on last edited by
            #6

            @Christian-Ehrlicher Im trying to do subclass QObject. I can read also the error. Obviously I'm doing something wrong. Do you think is it the true way you make me realize my mistake?

            JonBJ 1 Reply Last reply
            0
            • Christian EhrlicherC Offline
              Christian EhrlicherC Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on last edited by
              #7

              @suslucoder said in error: type 'QObject' is not a direct base of 'MyThread':

              Im trying to do subclass QObject

              But you don't:

              class MyThread: public QThread

              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
              Visit the Qt Academy at https://academy.qt.io/catalog

              1 Reply Last reply
              0
              • D deleted286

                @Christian-Ehrlicher Im trying to do subclass QObject. I can read also the error. Obviously I'm doing something wrong. Do you think is it the true way you make me realize my mistake?

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by JonB
                #8

                @suslucoder
                Can I ask you one thing: are you trying to use threads because this is an assignment/exam/educational? Do you really have any need for using threads, for whatever you are trying to achieve? Threads are one of the hardest things to get right. So many beginners on this forum start out trying to use threads when there is no need to do so, and run into problems, it could be a bad idea and not at all needed. If I were learning Qt they are the last thing I would want to start out on. Unless you have a good reason for really wanting to use them.

                D 1 Reply Last reply
                2
                • JonBJ JonB

                  @suslucoder
                  Can I ask you one thing: are you trying to use threads because this is an assignment/exam/educational? Do you really have any need for using threads, for whatever you are trying to achieve? Threads are one of the hardest things to get right. So many beginners on this forum start out trying to use threads when there is no need to do so, and run into problems, it could be a bad idea and not at all needed. If I were learning Qt they are the last thing I would want to start out on. Unless you have a good reason for really wanting to use them.

                  D Offline
                  D Offline
                  deleted286
                  wrote on last edited by
                  #9

                  @JonB It is not an assignment or an exam. I just want to learn all subjects quickly

                  1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @suslucoder said in error: type 'QObject' is not a direct base of 'MyThread':

                    I just want to learn all subjects quickly

                    Then I would start with the basics and not with advanced topics like threads.

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    D 1 Reply Last reply
                    0
                    • Christian EhrlicherC Christian Ehrlicher

                      @suslucoder said in error: type 'QObject' is not a direct base of 'MyThread':

                      I just want to learn all subjects quickly

                      Then I would start with the basics and not with advanced topics like threads.

                      D Offline
                      D Offline
                      deleted286
                      wrote on last edited by
                      #11

                      @Christian-Ehrlicher thank you, i understand my mistake and solve it.

                      1 Reply Last reply
                      0

                      • Login

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