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. Other class read unchanged variable value
Forum Updated to NodeBB v4.3 + New Features

Other class read unchanged variable value

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 4 Posters 949 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.
  • sierdzioS sierdzio

    @BD9a said in Other Thread in my app dont get changed variable value:

    QQmlExpression: Expression qrc:/main.qml:104:17 depends on non-NOTIFYable properties:

    You need to add NOTIFY to your Q_PROPERTY and add a signal (and remeber to emit it when value changes!).

    B Offline
    B Offline
    BD9a
    wrote on last edited by
    #3

    @sierdzio its necessary in this case? I have exacly same config in other project, and it work good

    sierdzioS 1 Reply Last reply
    0
    • B BD9a

      @sierdzio its necessary in this case? I have exacly same config in other project, and it work good

      sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #4

      @BD9a said in Other Thread in my app dont get changed variable value:

      @sierdzio its necessary in this case? I have exacly same config in other project, and it work good

      Yes. Without NOTIFY, QML engine has no idea that value has updated.

      (Z(:^

      B 1 Reply Last reply
      1
      • sierdzioS sierdzio

        @BD9a said in Other Thread in my app dont get changed variable value:

        @sierdzio its necessary in this case? I have exacly same config in other project, and it work good

        Yes. Without NOTIFY, QML engine has no idea that value has updated.

        B Offline
        B Offline
        BD9a
        wrote on last edited by BD9a
        #5

        @sierdzio It could be useful, but I dont think it's my problem. In other project Q_PROPERTY without NOTIFY work's good, and probably one strong diffrence is that additional thread.

        b_drink variable is changing it's value, but function in other thread reading unchanged value.

        Removed this additional Thread (I dont really need this, those loops operate on ~3sec interval) and saw sth really weird. I changed this button to just print b_dring variable value (hardcoded as false) - in same class it prints false, in loop class it printing true wtf...

        J.HilkJ 1 Reply Last reply
        0
        • B BD9a

          @sierdzio It could be useful, but I dont think it's my problem. In other project Q_PROPERTY without NOTIFY work's good, and probably one strong diffrence is that additional thread.

          b_drink variable is changing it's value, but function in other thread reading unchanged value.

          Removed this additional Thread (I dont really need this, those loops operate on ~3sec interval) and saw sth really weird. I changed this button to just print b_dring variable value (hardcoded as false) - in same class it prints false, in loop class it printing true wtf...

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #6

          @BD9a minimal compileable example, please.


          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          0
          • B Offline
            B Offline
            BD9a
            wrote on last edited by BD9a
            #7

            There is current code:
            https://github.com/BD9a/test

            Loop/loop.cpp printing b_drink defined in Config/config.h

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

              Are you sure your testapp does not crash? 'Config *config;' is unitialized...

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

              B 1 Reply Last reply
              1
              • Christian EhrlicherC Christian Ehrlicher

                Are you sure your testapp does not crash? 'Config *config;' is unitialized...

                B Offline
                B Offline
                BD9a
                wrote on last edited by
                #9

                @Christian-Ehrlicher It doesnt crash

                Current value is:  false
                true
                true
                true
                
                Christian EhrlicherC 1 Reply Last reply
                0
                • B BD9a

                  @Christian-Ehrlicher It doesnt crash

                  Current value is:  false
                  true
                  true
                  true
                  
                  Christian EhrlicherC Offline
                  Christian EhrlicherC Offline
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #10

                  @BD9a Please fix your code, it can't work as I already explained.

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

                  B 1 Reply Last reply
                  0
                  • Christian EhrlicherC Christian Ehrlicher

                    @BD9a Please fix your code, it can't work as I already explained.

                    B Offline
                    B Offline
                    BD9a
                    wrote on last edited by
                    #11

                    @Christian-Ehrlicher how it should be done? In my opinion it should work (maybe cuz I dont understand it well?)

                    J.HilkJ 1 Reply Last reply
                    0
                    • B BD9a

                      @Christian-Ehrlicher how it should be done? In my opinion it should work (maybe cuz I dont understand it well?)

                      J.HilkJ Offline
                      J.HilkJ Offline
                      J.Hilk
                      Moderators
                      wrote on last edited by
                      #12

                      @BD9a I'm not entirely sure, what's going, or to be precise why everything doesn't go up in flames, but it is running on my pc and it shoudn't.

                      You can force this on your side as well by properly initializing the Config * inside Loop to a nullptr.

                      private:
                          Config *config = nullptr;
                      
                      

                      that will crash, and it should.

                      Here, what to do to fix this:

                      Enable writing & storing

                      void Config::w_drink(bool value)
                      {
                          qDebug() << "Current value is: " << b_drink;
                          if( b_drink == value)
                               return;
                      
                          b_drink = value;
                          //emit stateChanged(value);
                      }
                      

                      Pass the Config object on (from main.cpp) on. for example like this:

                      //loop.h
                      explicit Loop(Config *conf, QObject *parent = nullptr);
                      ...
                      private:
                          Config *config = nullptr; 
                      
                      //loop.cpp
                      Loop::Loop(Config *conf, QObject *parent) 
                            : QObject(parent) , config(conf){
                          flaskNo1 = new QTimer(this);
                          flaskNo2 = new QTimer(this);
                          flaskNo3 = new QTimer(this);
                          flaskNo4 = new QTimer(this);
                          flaskNo5 = new QTimer(this);
                      
                          connect(flaskNo1, SIGNAL(timeout()),this,SLOT(drinkNo1()));
                          connect(flaskNo2, SIGNAL(timeout()),this,SLOT(drinkNo2()));
                          connect(flaskNo3, SIGNAL(timeout()),this,SLOT(drinkNo3()));
                          connect(flaskNo4, SIGNAL(timeout()),this,SLOT(drinkNo4()));
                          connect(flaskNo5, SIGNAL(timeout()),this,SLOT(drinkNo5()));
                      
                          startLoop();
                      }
                      
                      //main.cpp
                      ...
                          Config config;
                          config.create();
                      
                          KeyTranslator ktr;
                          Loop loop(&config);
                      ...
                      

                      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                      Q: What's that?
                      A: It's blue light.
                      Q: What does it do?
                      A: It turns blue.

                      1 Reply Last reply
                      4

                      • Login

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