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. How to call a function from another cpp file
Forum Updated to NodeBB v4.3 + New Features

How to call a function from another cpp file

Scheduled Pinned Locked Moved General and Desktop
21 Posts 3 Posters 9.3k Views 1 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.
  • H Offline
    H Offline
    herculis
    wrote on last edited by
    #1

    hello guys
    i want to call a function in one cpp file from another cpp file.
    and i have written this function to slot
    Can anyone please help me in this

    P.S. i have added header file of second file(where the function is) also in the first file.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      Please, take the time to look at Qt's documentation as well as search this forum, this question has been asked many times.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • H Offline
        H Offline
        herculis
        wrote on last edited by
        #3

        i didnt find any post related to this question
        Please help

        1 Reply Last reply
        0
        • I Offline
          I Offline
          Ildar
          wrote on last edited by
          #4

          Please, show some problem code.
          Your function is class member?

          1 Reply Last reply
          0
          • H Offline
            H Offline
            herculis
            wrote on last edited by
            #5

            Header.h

            @
            class ap
            {
            Q_OBJECT
            public slot:
            void open();
            }

            call.cpp
            include header.h
            {
            class ap:: open()
            {
            }
            }
            @

            on.cpp

            @
            include header.h
            {
            connect(openButton,SIGNAL(clicked), this, SLOT(open));
            }
            @

            [edit: added missing coding tags @ SGaist]

            1 Reply Last reply
            0
            • H Offline
              H Offline
              herculis
              wrote on last edited by
              #6

              its like signal(clicked),this,slot(open)

              1 Reply Last reply
              0
              • I Offline
                I Offline
                Ildar
                wrote on last edited by
                #7

                Please, use tags for code.

                Maybe you need something like?

                @
                // call.h
                class call : public QObject
                {
                Q_OBJECT

                explicit call(QObject *parent)

                public slot:
                void open();
                }

                // call.cpp
                #include "call.h"
                #include <qdebug.h>

                call::call(QObject *parent): QObject(parent)
                {}

                call::open()
                {
                qDebug() << "CALL";
                }

                // on.h
                #include "call.h"
                class on : public QObject
                {
                Q_OBJECT
                explicit on(QObject *parent)

                signals:
                void mySignal();

                private:
                call *m_call;
                }

                // on.cpp
                on::on(QObject *parent): QObject(parent)
                {
                m_call = new call(this);

                connect(this, &on::mySignal, m_call, &call::open);

                emit mySignal();
                }
                @

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  herculis
                  wrote on last edited by
                  #8

                  I am geeting error at line 41
                  @m_call = new call(this);@
                  no instance of constructor
                  no appropriate default constructor available

                  1 Reply Last reply
                  0
                  • I Offline
                    I Offline
                    Ildar
                    wrote on last edited by
                    #9

                    Sorry!) I updated my answer

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      herculis
                      wrote on last edited by
                      #10

                      what u updated ???

                      1 Reply Last reply
                      0
                      • I Offline
                        I Offline
                        Ildar
                        wrote on last edited by
                        #11

                        See my above answer:

                        @
                        // call.h
                        class call : public QObject
                        {
                        Q_OBJECT

                        explicit call(QObject *parent)

                        public slot:
                        void open();
                        }
                        ...@

                        1 Reply Last reply
                        0
                        • H Offline
                          H Offline
                          herculis
                          wrote on last edited by
                          #12

                          i did what u suggested but its not working.Not getting any error but not working also.
                          plz help

                          1 Reply Last reply
                          0
                          • H Offline
                            H Offline
                            herculis
                            wrote on last edited by
                            #13

                            @
                            Header.h
                            class ap
                            {
                            Q_OBJECT
                            public slot:
                            void open();
                            }

                            call.cpp
                            include header.h
                            {
                            class ap:: open()
                            {
                            }
                            }
                            

                            on.h
                            include header.h
                            {
                            class on
                            private:
                            ap*m_call

                            }

                            on.cpp

                            include header.h
                            {
                            

                            m_call = new ap(this);
                            connect(openButton,SIGNAL(clicked), m_call, SLOT(open));@

                            1 Reply Last reply
                            0
                            • I Offline
                              I Offline
                              Ildar
                              wrote on last edited by
                              #14

                              Try rename file names: you must have 4 files:
                              call.h
                              call.cpp
                              on.h
                              on.cpp

                              And, please show to us all files acrtual contents, not pseudocode.

                              1 Reply Last reply
                              0
                              • H Offline
                                H Offline
                                herculis
                                wrote on last edited by
                                #15

                                i added header file in the program but then also its not working i have to create instance, with this it will work i guess i did that also means i created one object of the class where the function is and put that object in connect command but its not working please help
                                can a one give me an exmaple or a link for "calling a function from other cpp file" so that i will get an idea how to do that.

                                1 Reply Last reply
                                0
                                • I Offline
                                  I Offline
                                  Ildar
                                  wrote on last edited by
                                  #16

                                  Just create new project (Test) and add there files:

                                  @
                                  // call.h
                                  #ifndef CALL_H
                                  #define CALL_H

                                  #include <QObject>

                                  class call : public QObject
                                  {
                                  Q_OBJECT

                                  public:
                                  explicit call(QObject *parent = 0);

                                  public slots:
                                  void open();
                                  };

                                  #endif // CALL_H@

                                  @
                                  // call.cpp
                                  #include "call.h"
                                  #include <qdebug.h>

                                  call::call(QObject *parent): QObject(parent)
                                  {}

                                  void call::open()
                                  {
                                  qDebug() << "CALL";
                                  }
                                  @

                                  @
                                  // on.h
                                  #ifndef ON_H
                                  #define ON_H

                                  #include <QObject>
                                  #include "call.h"

                                  class on : public QObject
                                  {
                                  Q_OBJECT

                                  public:
                                  explicit on(QObject *parent = 0);

                                  signals:
                                  void mySignal();

                                  private:
                                  call *m_call;
                                  };

                                  #endif // ON_H
                                  @

                                  @
                                  // on.cpp
                                  #include "on.h"

                                  on::on(QObject *parent): QObject(parent)
                                  {
                                  m_call = new call(this);

                                  connect(this, &on::mySignal, m_call, &call::open);

                                  emit mySignal();
                                  }
                                  @

                                  @
                                  // main.cpp
                                  #include "on.h"

                                  int main(int argc, char *argv[])
                                  {
                                  on *myOn = new on();
                                  }
                                  @

                                  @
                                  // Test.pro
                                  HEADERS +=
                                  call.h
                                  on.h

                                  SOURCES +=
                                  call.cpp
                                  on.cpp
                                  main.cpp
                                  @

                                  1 Reply Last reply
                                  0
                                  • H Offline
                                    H Offline
                                    herculis
                                    wrote on last edited by
                                    #17

                                    Thanks this works but in my code its not working dont know why
                                    Thanks though.

                                    1 Reply Last reply
                                    0
                                    • H Offline
                                      H Offline
                                      herculis
                                      wrote on last edited by
                                      #18

                                      i am getting error in my prog when i write
                                      @m_call=new call (this)@
                                      ''that no instance of constructor''

                                      1 Reply Last reply
                                      0
                                      • I Offline
                                        I Offline
                                        Ildar
                                        wrote on last edited by
                                        #19

                                        Simpify the code and show it.

                                        1 Reply Last reply
                                        0
                                        • H Offline
                                          H Offline
                                          herculis
                                          wrote on last edited by
                                          #20

                                          ok now i know the problem when i define the class contructore it has arguments in it thats why i am not able to create object.Do you know any solution regrading this how can i create object of a class whose constructor has arguments like bool*a,QWidget parent = 0
                                          means
                                          @call(bool
                                          a ,QWidget *parent = 0,QObject *parent)@

                                          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