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. Updating c++ data in Qml
Forum Updated to NodeBB v4.3 + New Features

Updating c++ data in Qml

Scheduled Pinned Locked Moved Solved General and Desktop
46 Posts 6 Posters 6.0k Views 2 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.
  • D dziko147
    26 Jul 2021, 23:39

    @SGaist In my situation , when I would like to create an Backend instance in UploadCSV to emit signal .
    And create Backend instance in MainWindow to set a contextProperty .
    what should I do .
    Please :)

    K Offline
    K Offline
    KroMignon
    wrote on 27 Jul 2021, 05:17 last edited by
    #19

    @dziko147 said in Updating c++ data in Qml:

    In my situation , when I would like to create an Backend instance in UploadCSV to emit signal .
    And create Backend instance in MainWindow to set a contextProperty .
    what should I do .
    Please :)

    You should first explain why you think you have to create a Backend instance in UploadCSV?
    It is impossible to understand (for me) what is the purpose of this.
    And emitting a signal which is connected to nothing, results to nothing.

    It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

    1 Reply Last reply
    0
    • D Offline
      D Offline
      dziko147
      wrote on 27 Jul 2021, 08:38 last edited by
      #20

      @KroMignon in uploadcsv ui , i have a button . I want to emit clicked signal connected to a slot in backend which change data (see my code please) .

      K 1 Reply Last reply 27 Jul 2021, 09:00
      0
      • D dziko147
        27 Jul 2021, 08:38

        @KroMignon in uploadcsv ui , i have a button . I want to emit clicked signal connected to a slot in backend which change data (see my code please) .

        K Offline
        K Offline
        KroMignon
        wrote on 27 Jul 2021, 09:00 last edited by
        #21

        @dziko147 said in Updating c++ data in Qml:

        in uploadcsv ui , i have a button . I want to emit clicked signal connected to a slot in backend which change data (see my code please) .

        Your code is incomprehensible!
        Please learn C++ basics, like what are classes, class members, class methods and class instances.

        I don't understand what is your problem, on click event the method status() instance back which is created in UploadCSV.cpp will be called and you should see a debug message on console.

        I don't understand why you expect anything on QML side as this instance is not exposed to QML.

        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

        1 Reply Last reply
        1
        • D Offline
          D Offline
          dziko147
          wrote on 27 Jul 2021, 11:32 last edited by
          #22

          there is no one who did something like this ?

          K 1 Reply Last reply 27 Jul 2021, 12:35
          0
          • D dziko147
            27 Jul 2021, 11:32

            there is no one who did something like this ?

            K Offline
            K Offline
            KroMignon
            wrote on 27 Jul 2021, 12:35 last edited by
            #23

            @dziko147 said in Updating c++ data in Qml:

            there is no one who did something like this ?

            Again, explain what you want to do, not what you have done.
            Because what you have done don't made sense.

            If you want to update the Backend instance back create in MainWindow on button click in UploadCSV.cpp, then you have to connect the click event with this instance, not create a new instance of Backend in UploadCSV.cpp.

            It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

            1 Reply Last reply
            0
            • D Offline
              D Offline
              dziko147
              wrote on 27 Jul 2021, 13:00 last edited by
              #24

              @KroMignon if I understand you . I should create an MainWindow Instance in UploadCSV.cpp then I call the back defined in MainWindow ?
              Is that ?

              K J 2 Replies Last reply 27 Jul 2021, 13:06
              0
              • D dziko147
                27 Jul 2021, 13:00

                @KroMignon if I understand you . I should create an MainWindow Instance in UploadCSV.cpp then I call the back defined in MainWindow ?
                Is that ?

                K Offline
                K Offline
                KroMignon
                wrote on 27 Jul 2021, 13:06 last edited by
                #25

                @dziko147 said in Updating c++ data in Qml:

                if I understand you . I should create an MainWindow Instance in UploadCSV.cpp then I call the back defined in MainWindow ?
                Is that ?

                No, you don't understand anything, and that is very bad :(
                You have to connect the click signal from the UploadCSV instance to the back variable (which should be a class member ==> https://www.learncpp.com/cpp-tutorial/classes-and-class-members/) of the MainWindow instance.

                And NOT create a new instance.

                It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                1 Reply Last reply
                1
                • D dziko147
                  27 Jul 2021, 13:00

                  @KroMignon if I understand you . I should create an MainWindow Instance in UploadCSV.cpp then I call the back defined in MainWindow ?
                  Is that ?

                  J Offline
                  J Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 27 Jul 2021, 13:06 last edited by
                  #26

                  @dziko147 said in Updating c++ data in Qml:

                  Is that ?

                  No.
                  Why should UploadCSV create main window?!
                  Please read more carefully.

                  You should really learn what instances are! Two different instance are exactly that: two different instances/objects, they are NOT same.
                  If you create two instances of a class (lets name them A and B), then connect a slot from A to a signal, then do you expect that the slot in B will also be called if the signal is emitted? Yes or No?

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  D 1 Reply Last reply 27 Jul 2021, 13:11
                  0
                  • J jsulm
                    27 Jul 2021, 13:06

                    @dziko147 said in Updating c++ data in Qml:

                    Is that ?

                    No.
                    Why should UploadCSV create main window?!
                    Please read more carefully.

                    You should really learn what instances are! Two different instance are exactly that: two different instances/objects, they are NOT same.
                    If you create two instances of a class (lets name them A and B), then connect a slot from A to a signal, then do you expect that the slot in B will also be called if the signal is emitted? Yes or No?

                    D Offline
                    D Offline
                    dziko147
                    wrote on 27 Jul 2021, 13:11 last edited by dziko147
                    #27

                    @jsulm Sure No .

                    @KroMignon If I don't create MainWindow instance, how can i access to mainwindow variable from UploadCSV.

                    MainWindow *mymain=new MainWindow();
                        connect(ui->parambtn_2, SIGNAL(clicked()),mymain->back, SLOT(status()),Qt::QueuedConnection);
                    
                    

                    this is what I think .
                    Correct me please :)

                    J 1 Reply Last reply 27 Jul 2021, 13:18
                    0
                    • D dziko147
                      27 Jul 2021, 13:11

                      @jsulm Sure No .

                      @KroMignon If I don't create MainWindow instance, how can i access to mainwindow variable from UploadCSV.

                      MainWindow *mymain=new MainWindow();
                          connect(ui->parambtn_2, SIGNAL(clicked()),mymain->back, SLOT(status()),Qt::QueuedConnection);
                      
                      

                      this is what I think .
                      Correct me please :)

                      J Offline
                      J Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on 27 Jul 2021, 13:18 last edited by
                      #28

                      @dziko147 said in Updating c++ data in Qml:

                      If I don't create MainWindow instance, how can i access to mainwindow variable from UploadCSV.

                      Don't create a SECOND MainWindow instance! Use the one you already have (you probably create it in main.cpp, right?)...

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      D 1 Reply Last reply 27 Jul 2021, 13:28
                      0
                      • J jsulm
                        27 Jul 2021, 13:18

                        @dziko147 said in Updating c++ data in Qml:

                        If I don't create MainWindow instance, how can i access to mainwindow variable from UploadCSV.

                        Don't create a SECOND MainWindow instance! Use the one you already have (you probably create it in main.cpp, right?)...

                        D Offline
                        D Offline
                        dziko147
                        wrote on 27 Jul 2021, 13:28 last edited by
                        #29

                        @jsulm Yes sure . so I use it ?

                        J 1 Reply Last reply 27 Jul 2021, 13:39
                        0
                        • D dziko147
                          27 Jul 2021, 13:28

                          @jsulm Yes sure . so I use it ?

                          J Offline
                          J Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on 27 Jul 2021, 13:39 last edited by
                          #30

                          @dziko147 said in Updating c++ data in Qml:

                          so I use it ?

                          Yes, the one you already have

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            dziko147
                            wrote on 27 Jul 2021, 13:48 last edited by
                            #31

                            @KroMignon Is this code correct ??

                            I create a class member :

                            class MainWindow : public QMainWindow
                            {
                                Q_OBJECT
                            public:
                                Backend *back;
                            

                            then in uploadCSV.cpp

                              connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);
                            
                            

                            But still doesn't work !

                            J 1 Reply Last reply 27 Jul 2021, 13:50
                            0
                            • D dziko147
                              27 Jul 2021, 13:48

                              @KroMignon Is this code correct ??

                              I create a class member :

                              class MainWindow : public QMainWindow
                              {
                                  Q_OBJECT
                              public:
                                  Backend *back;
                              

                              then in uploadCSV.cpp

                                connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);
                              
                              

                              But still doesn't work !

                              J Offline
                              J Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on 27 Jul 2021, 13:50 last edited by
                              #32

                              @dziko147 said in Updating c++ data in Qml:

                              connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);

                              You're creating a new MainWindow instance in the connect.
                              I give up...

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              D 1 Reply Last reply 27 Jul 2021, 13:53
                              0
                              • J jsulm
                                27 Jul 2021, 13:50

                                @dziko147 said in Updating c++ data in Qml:

                                connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);

                                You're creating a new MainWindow instance in the connect.
                                I give up...

                                D Offline
                                D Offline
                                dziko147
                                wrote on 27 Jul 2021, 13:53 last edited by
                                #33

                                @jsulm Sorry :( :( :(
                                why you don't/want give an example ?
                                I can understand you with example :)

                                J 1 Reply Last reply 27 Jul 2021, 14:05
                                0
                                • D dziko147
                                  27 Jul 2021, 13:53

                                  @jsulm Sorry :( :( :(
                                  why you don't/want give an example ?
                                  I can understand you with example :)

                                  J Offline
                                  J Offline
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on 27 Jul 2021, 14:05 last edited by jsulm
                                  #34

                                  @dziko147 You should really learn C++ basics first before you continue with Qt.
                                  This is now second thread from you where people are trying to explain to you what you are doing wrong. Your problem is not Qt but missing C++ knowledge.

                                  For example: why did you write "MainWindow()" bellow? Do you know what MainWindow() does? And how does this relate to what I wrote (use existing MainWindow instance)? You again create a new MainWindow instance, even if you was told many times to not to do so!

                                  connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);
                                  

                                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  D 1 Reply Last reply 27 Jul 2021, 14:08
                                  0
                                  • J jsulm
                                    27 Jul 2021, 14:05

                                    @dziko147 You should really learn C++ basics first before you continue with Qt.
                                    This is now second thread from you where people are trying to explain to you what you are doing wrong. Your problem is not Qt but missing C++ knowledge.

                                    For example: why did you write "MainWindow()" bellow? Do you know what MainWindow() does? And how does this relate to what I wrote (use existing MainWindow instance)? You again create a new MainWindow instance, even if you was told many times to not to do so!

                                    connect(ui->parambtn_2, SIGNAL(clicked()),MainWindow().back, SLOT(statuspican()),Qt::QueuedConnection);
                                    
                                    D Offline
                                    D Offline
                                    dziko147
                                    wrote on 27 Jul 2021, 14:08 last edited by
                                    #35

                                    @jsulm ok told me how to do this . I am a student in first year . So i am already learning :/ .
                                    Yes I understand that i create a second instance but i haven't another choice . the only solution for me is to ask you . :(

                                    J 1 Reply Last reply 27 Jul 2021, 14:25
                                    0
                                    • D dziko147
                                      27 Jul 2021, 14:08

                                      @jsulm ok told me how to do this . I am a student in first year . So i am already learning :/ .
                                      Yes I understand that i create a second instance but i haven't another choice . the only solution for me is to ask you . :(

                                      J Offline
                                      J Offline
                                      jsulm
                                      Lifetime Qt Champion
                                      wrote on 27 Jul 2021, 14:25 last edited by
                                      #36

                                      @dziko147 said in Updating c++ data in Qml:

                                      Yes I understand that i create a second instance

                                      You need to understand that it is quite disappointing for others to repeat the same thing again and again and again and then see that you are still doing EXACTLY the same mistake even if you know that it is wrong! So, why do you again post code which is wrong if you know that it is wrong?

                                      I can't tell you how exactly you need to do it because I don't have your code and so don't know how it is structured...
                                      From architectural point of view it is strange why uploadCSV should connect a signal to a slot in a member variable in another class? uploadCSV should not even know that MainWindow has a member called "back". This was already pointed out by @SGaist

                                      Where is the uploadCSV instance created? Does MainWindow create it?

                                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                                      1 Reply Last reply
                                      1
                                      • D Offline
                                        D Offline
                                        dziko147
                                        wrote on 27 Jul 2021, 14:35 last edited by
                                        #37

                                        @jsulm this is my situation.

                                        My project compouned of 3 classes :
                                        1/Mainwindow
                                        2/backend
                                        /UploadCSV
                                        In Mainwindow :
                                        1/ I have a quickwidget which integrate a qml file .
                                        2/ I create a backend instance to get data from it and fill the QMl File

                                        In Backend
                                        1/I have the defenition of my data (getter, setter, change slots).

                                        In UploadCSV
                                        1/I have a button when it's clicked a slot in Backend will change some data .
                                        2/After change data I would like to display it on QML .

                                        I hope it's clear

                                        J 1 Reply Last reply 27 Jul 2021, 14:41
                                        0
                                        • D dziko147
                                          27 Jul 2021, 14:35

                                          @jsulm this is my situation.

                                          My project compouned of 3 classes :
                                          1/Mainwindow
                                          2/backend
                                          /UploadCSV
                                          In Mainwindow :
                                          1/ I have a quickwidget which integrate a qml file .
                                          2/ I create a backend instance to get data from it and fill the QMl File

                                          In Backend
                                          1/I have the defenition of my data (getter, setter, change slots).

                                          In UploadCSV
                                          1/I have a button when it's clicked a slot in Backend will change some data .
                                          2/After change data I would like to display it on QML .

                                          I hope it's clear

                                          J Offline
                                          J Offline
                                          jsulm
                                          Lifetime Qt Champion
                                          wrote on 27 Jul 2021, 14:41 last edited by
                                          #38

                                          @dziko147 said in Updating c++ data in Qml:

                                          I hope it's clear

                                          No, you did not answer my question, which is actually quite clear...

                                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          1 Reply Last reply
                                          0

                                          28/46

                                          27 Jul 2021, 13:18

                                          • Login

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