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. Signals & Slots stopped working

Signals & Slots stopped working

Scheduled Pinned Locked Moved Unsolved General and Desktop
signal & slotc++11
15 Posts 5 Posters 4.0k 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.
  • V Offline
    V Offline
    VRonin
    wrote on 9 Aug 2016, 18:18 last edited by
    #6

    replacing [this] with [&] works?

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    G 1 Reply Last reply 11 Aug 2016, 13:06
    0
    • G gabor53
      9 Aug 2016, 17:27

      Hi @Paul-Colby
      Here is the complete error message:

      C:\Programming\Projects\Folkfriends_1_0\additem.cpp:-1: In lambda function:
      C:\Programming\Projects\Folkfriends_1_0\additem.cpp:254: error: 'description' is not captured
      description = getDescription ();
      ^
      C:\Programming\Projects\Folkfriends_1_0\additem.cpp:252: the lambda has no capture-default
      connect(ui->descr_TextEdit, &QTextEdit::textChanged, this
      ^
      C:\Programming\Projects\Folkfriends_1_0\additem.cpp:29: 'QString description' declared here
      void Additem::Addcontent(QString name, QString newWhat, QString newMaterial, QString newColor, QString description, QString newmonth)
      ^

      K Offline
      K Offline
      kshegunov
      Moderators
      wrote on 9 Aug 2016, 21:41 last edited by
      #7

      @gabor53
      If description is a function parameter you must capture it explicitly:

      void Additem::Addcontent(QString name, QString newWhat, QString newMaterial, QString newColor, QString description, QString newmonth)
      {
          // ... 
          connect(ui->descr_TextEdit, &QTextEdit::textChanged, [this, description]()
          {
              description = getDescription();
          }); 
          // ...
      }
      

      But in any case such a capture is useless, because you can only do it by value.

      Read and abide by the Qt Code of Conduct

      V 1 Reply Last reply 10 Aug 2016, 06:53
      0
      • P Paul Colby
        9 Aug 2016, 04:07

        Hi @gabor53,

        Does your class still have a description member?

        P Offline
        P Offline
        Paul Colby
        wrote on 9 Aug 2016, 21:52 last edited by
        #8

        @Paul-Colby said:

        Does your class still have a description member?

        @gabor53 said:

        Yes I have it.

        void Additem::Addcontent(QString name, QString newWhat, QString newMaterial, QString newColor, QString description, QString newmonth)
        

        That's not a class member.

        Cheers.

        1 Reply Last reply
        0
        • K kshegunov
          9 Aug 2016, 21:41

          @gabor53
          If description is a function parameter you must capture it explicitly:

          void Additem::Addcontent(QString name, QString newWhat, QString newMaterial, QString newColor, QString description, QString newmonth)
          {
              // ... 
              connect(ui->descr_TextEdit, &QTextEdit::textChanged, [this, description]()
              {
                  description = getDescription();
              }); 
              // ...
          }
          

          But in any case such a capture is useless, because you can only do it by value.

          V Offline
          V Offline
          VRonin
          wrote on 10 Aug 2016, 06:53 last edited by
          #9

          @kshegunov
          From the compiler output Additem::Addcontent is at line 29 while the lambda is at line 252 so I doubt it's nested. It's just description missing as a class member full stop

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          K 1 Reply Last reply 10 Aug 2016, 11:04
          0
          • V VRonin
            10 Aug 2016, 06:53

            @kshegunov
            From the compiler output Additem::Addcontent is at line 29 while the lambda is at line 252 so I doubt it's nested. It's just description missing as a class member full stop

            K Offline
            K Offline
            kshegunov
            Moderators
            wrote on 10 Aug 2016, 11:04 last edited by
            #10

            @VRonin

            so I doubt it's nested

            At this point we can guess and bet.

            It's just description missing as a class member full stop

            Perhaps, or maybe the function is spanning 300 lines. The point is, without a more complete piece of the code we can't know for sure.

            @gabor53

            Do you mind sharing your class declaration and Additem::Addcontent function?

            Read and abide by the Qt Code of Conduct

            1 Reply Last reply
            0
            • V VRonin
              9 Aug 2016, 18:18

              replacing [this] with [&] works?

              G Offline
              G Offline
              gabor53
              wrote on 11 Aug 2016, 13:06 last edited by
              #11

              @VRonin
              Hi,
              replacing [this] with [&] worked. Thank you.

              K 1 Reply Last reply 11 Aug 2016, 13:12
              0
              • G gabor53
                11 Aug 2016, 13:06

                @VRonin
                Hi,
                replacing [this] with [&] worked. Thank you.

                K Offline
                K Offline
                kshegunov
                Moderators
                wrote on 11 Aug 2016, 13:12 last edited by
                #12

                @gabor53
                Perhaps it compiles, but have you tested if it runs okay? Judging by the compile error and the solution, I'd be really surprised if you don't get a segfault. My previous request - to provide the whole function definition - stands.

                Read and abide by the Qt Code of Conduct

                G 1 Reply Last reply 12 Aug 2016, 18:58
                0
                • K kshegunov
                  11 Aug 2016, 13:12

                  @gabor53
                  Perhaps it compiles, but have you tested if it runs okay? Judging by the compile error and the solution, I'd be really surprised if you don't get a segfault. My previous request - to provide the whole function definition - stands.

                  G Offline
                  G Offline
                  gabor53
                  wrote on 12 Aug 2016, 18:58 last edited by
                  #13

                  Hi @kshegunov
                  Here is the full code:
                  additem.h
                  Addcontent function
                  Thank you for your help.

                  K 1 Reply Last reply 12 Aug 2016, 19:16
                  1
                  • G gabor53
                    12 Aug 2016, 18:58

                    Hi @kshegunov
                    Here is the full code:
                    additem.h
                    Addcontent function
                    Thank you for your help.

                    K Offline
                    K Offline
                    kshegunov
                    Moderators
                    wrote on 12 Aug 2016, 19:16 last edited by
                    #14

                    @gabor53
                    You are hiding the class member with the function argument because they have the same name. I advise not to use the same name for local and class variables.

                    Read and abide by the Qt Code of Conduct

                    1 Reply Last reply
                    1
                    • J Offline
                      J Offline
                      jerome_isAviable
                      wrote on 13 Aug 2016, 02:35 last edited by
                      #15
                      1. 'description' is not captured
                        said that in your lambda, 'description' has not been captured... then add it on the list of captured elements: [this, captured]
                        I red inside the answers that you may declare same name for function and variable... don't do that, it will generate problems for sure.
                      2. QString 'description' declared here
                        it is a clue for said that the answer of call this.getDescription() should be a QString (QString getDescription() const;)
                        so 'description' has to be a QString (i think in private area of this). because you are not pass it, it is an undeclared new object inside your lambda function.

                      so give a varaible name unik and pass the variable inside your lambda by the array list [....] should fix your problem.

                      1 Reply Last reply
                      0

                      15/15

                      13 Aug 2016, 02:35

                      • Login

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