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. communicate data between two windows

communicate data between two windows

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 6 Posters 1.9k 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi,

    You can use Signals and Slots, or a simple setter, or pass the value as a parameter of the constructor.

    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
    2
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #3

      Hi
      One way is to give it to the window when you create it.
      Change its constructor to accept extra parameter
      and give it to it when constructed.

      int c= xxxx
      seconde_p3 * win3 = new seconde_p3(this, c):
      win3->show();

      1 Reply Last reply
      2
      • AlbatorA Offline
        AlbatorA Offline
        Albator
        wrote on last edited by
        #4
        This post is deleted!
        1 Reply Last reply
        0
        • AlbatorA Offline
          AlbatorA Offline
          Albator
          wrote on last edited by
          #5

          I try getter/setter :

          in my first windows second_p2

          // seconde_p2.h
          
              //getter
              int get_c() const{return c;}
              //setter
              void set_c(int val);
          
          protected :
              int c;
          
          // seconde_p2.cpp
          seconde_p2::seconde_p2(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::seconde_p2)
          {
              ui->setupUi(this);
          
              c=3;
          
          
          }
          

          yes for this example setter is useless and in my seconde page alias seconde_p3 i have :

          // seconde_p3.cpp
          
          seconde_p3::seconde_p3(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::seconde_p3)
          {
              ui->setupUi(this);
          
          
          
          seconde_p2* test = new seconde_p2();
          test->get_c();
          qDebug()<< test;
          
          
          
          }
          

          i have 0 error but ! in the console i can look this :
          seconde_p2(0x1bf26bf8, name="seconde_p2")

          and it's not my c=3 :(

          B 1 Reply Last reply
          0
          • AlbatorA Albator

            I try getter/setter :

            in my first windows second_p2

            // seconde_p2.h
            
                //getter
                int get_c() const{return c;}
                //setter
                void set_c(int val);
            
            protected :
                int c;
            
            // seconde_p2.cpp
            seconde_p2::seconde_p2(QWidget *parent) :
                QMainWindow(parent),
                ui(new Ui::seconde_p2)
            {
                ui->setupUi(this);
            
                c=3;
            
            
            }
            

            yes for this example setter is useless and in my seconde page alias seconde_p3 i have :

            // seconde_p3.cpp
            
            seconde_p3::seconde_p3(QWidget *parent) :
                QMainWindow(parent),
                ui(new Ui::seconde_p3)
            {
                ui->setupUi(this);
            
            
            
            seconde_p2* test = new seconde_p2();
            test->get_c();
            qDebug()<< test;
            
            
            
            }
            

            i have 0 error but ! in the console i can look this :
            seconde_p2(0x1bf26bf8, name="seconde_p2")

            and it's not my c=3 :(

            B Offline
            B Offline
            Bonnie
            wrote on last edited by Bonnie
            #6

            @Albator said in communicate data between two windows:

            i have 0 error but ! in the console i can look this :
            seconde_p2(0x1bf26bf8, name="seconde_p2")

            and it's not my c=3 :(

            [EDITED]
            Sorry, didn't understand your code until now...

            qDebug()<< test->get_c();
            

            That should output a "3"

            1 Reply Last reply
            2
            • AlbatorA Offline
              AlbatorA Offline
              Albator
              wrote on last edited by
              #7

              yes it's exact ! thanks all for your help ! :)))

              1 Reply Last reply
              0
              • AlbatorA Offline
                AlbatorA Offline
                Albator
                wrote on last edited by Albator
                #8

                i have a little problem, for a int it's okay but to make a getter with a qvector<double> it doesn't work.

                seconde_p2.h
                 //getter
                    int get_c() const{return c;}
                    QVector<double> get_vector() const{return fer;}
                    //setter
                    //void set_c(int val);
                
                protected :
                    int c=6;
                    QVector<double> fer;
                
                // seconde_p2.cpp
                seconde_p2::seconde_p2(QWidget *parent) :
                    QMainWindow(parent),
                    ui(new Ui::seconde_p2)
                {
                    ui->setupUi(this);
                
                    c=3;
                    fer={ 1, 2, 3, 4, 5, 6, 7 };
                
                
                }
                

                and in the seconde_p3.cpp

                seconde_p3::seconde_p3(QWidget *parent) :
                    QMainWindow(parent),
                    ui(new Ui::seconde_p3)
                {
                    ui->setupUi(this);
                
                seconde_p2* test = new seconde_p2();
                seconde_p2* test1 = new seconde_p2();
                
                test->get_vector();
                qDebug()<<"qvector<double> display"<< test->get_vector();
                
                test1->get_c();
                qDebug()<<"int display"<< test1->get_c();
                
                
                }
                

                in the console :

                qvector<double> display QVector() // why he is empty ?
                int display 3

                1 Reply Last reply
                0
                • AlbatorA Offline
                  AlbatorA Offline
                  Albator
                  wrote on last edited by
                  #9
                  This post is deleted!
                  1 Reply Last reply
                  0
                  • mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    Hi
                    Should work as you put value in the vector, in the constructor.

                    what does test->get_vector();
                    do ?

                    maybe you return empty list there ?

                    1 Reply Last reply
                    0
                    • AlbatorA Offline
                      AlbatorA Offline
                      Albator
                      wrote on last edited by
                      #11

                      @Albator said in communicate data between two windows:

                      QVector<double> get_vector() const{return fer;}

                      and fer is not empty, it works for c ...

                      1 Reply Last reply
                      0
                      • Q Offline
                        Q Offline
                        Q139
                        wrote on last edited by
                        #12

                        Is it wrong to use global window pointers and access setters getters via pointer instead of signals&slots?

                        1 Reply Last reply
                        0
                        • AlbatorA Offline
                          AlbatorA Offline
                          Albator
                          wrote on last edited by
                          #13

                          i want use getter in first but if i have not the choice maybe i will change my solution, it works for c so it should work for the qvector

                          mrjjM 1 Reply Last reply
                          0
                          • AlbatorA Albator

                            i want use getter in first but if i have not the choice maybe i will change my solution, it works for c so it should work for the qvector

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #14

                            @Albator
                            yes must also work for Qvector same way as int.

                            AlbatorA 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @Albator
                              yes must also work for Qvector same way as int.

                              AlbatorA Offline
                              AlbatorA Offline
                              Albator
                              wrote on last edited by
                              #15

                              @mrjj
                              that's what I think, but who knows where the pangolin is that's standing in the way of my code?

                              mrjjM 1 Reply Last reply
                              0
                              • AlbatorA Albator

                                @mrjj
                                that's what I think, but who knows where the pangolin is that's standing in the way of my code?

                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on last edited by
                                #16

                                @Albator
                                so while it returns empty list and the same time in same code and
                                in same run, it can return 3 for c ?
                                it seems impossible :)

                                AlbatorA 1 Reply Last reply
                                1
                                • mrjjM mrjj

                                  @Albator
                                  so while it returns empty list and the same time in same code and
                                  in same run, it can return 3 for c ?
                                  it seems impossible :)

                                  AlbatorA Offline
                                  AlbatorA Offline
                                  Albator
                                  wrote on last edited by
                                  #17

                                  @mrjj
                                  in first i put my value :

                                  seconde_p2::seconde_p2(QWidget *parent) :
                                      QMainWindow(parent),
                                      ui(new Ui::seconde_p2)
                                  {
                                      ui->setupUi(this);
                                  
                                      c=3;
                                      fer={ 1, 2, 3, 4, 5, 6, 7 };
                                      qDebug() << fer;
                                  
                                  
                                  }
                                  

                                  and in second i have a button who call the other windows :

                                  void seconde_p2::on_page3_clicked()
                                  {
                                      p3 = new seconde_p3(this);
                                      p3->show();
                                  }
                                  

                                  and for the final in the second_p3.cpp (my other window), i use my getter and display :

                                  seconde_p3::seconde_p3(QWidget *parent) :
                                      QMainWindow(parent),
                                      ui(new Ui::seconde_p3)
                                  {
                                      ui->setupUi(this);
                                  
                                  seconde_p2* test = new seconde_p2();
                                  seconde_p2* test1 = new seconde_p2();
                                  
                                  test->get_data1();
                                  qDebug()<<"qvector<double> display"<< test->get_data1();
                                  
                                  test1->get_c();
                                  qDebug()<<"int display"<< test1->get_c();
                                  
                                  
                                  }
                                  

                                  and tadaaaa : c is displayed correctly and fer is empty
                                  my conclusion ? it's a sad day :(

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

                                    @Albator said in communicate data between two windows:

                                    seconde_p2* test = new seconde_p2();
                                    seconde_p2* test1 = new seconde_p2();

                                    C++ basics - this are new local instances - it won't help at all. You have to pass the pointer from the other object to this class. This is basic c++ stuff - programming with Qt without this basic knowledge will not work.

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

                                    AlbatorA 1 Reply Last reply
                                    3
                                    • Christian EhrlicherC Christian Ehrlicher

                                      @Albator said in communicate data between two windows:

                                      seconde_p2* test = new seconde_p2();
                                      seconde_p2* test1 = new seconde_p2();

                                      C++ basics - this are new local instances - it won't help at all. You have to pass the pointer from the other object to this class. This is basic c++ stuff - programming with Qt without this basic knowledge will not work.

                                      AlbatorA Offline
                                      AlbatorA Offline
                                      Albator
                                      wrote on last edited by
                                      #19

                                      @Christian-Ehrlicher
                                      excuse me I try and thanks to your advices I advance and yes sometimes I miss my bases :)

                                      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