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. Problem connecting QAction to slot

Problem connecting QAction to slot

Scheduled Pinned Locked Moved Solved General and Desktop
13 Posts 4 Posters 1.5k 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.
  • J Offline
    J Offline
    Jakob Clausen
    wrote on last edited by
    #1

    Hi. I am trying to use a QToolBar to navigate through a QStackedWidget, but I cannot seem to connect the signals.
    I have

    QAction* ToolBar::addNavigationButton(QString name, QStackedWidget* workspace, int index)
    {
        QAction* action = new QAction(this);
        action->setObjectName(name);
        action->setCheckable(true);
        actionGroup.addAction(action);
        connect(action, &QAction::triggered, this, [=]() {workspace->setCurrentIndex(index);});
        return action;
    }
    

    And at the connect-line QtCreator says: QAction::triggered is not a signal (clazy-connect-non-signal).
    What am I missing. is QAction::triggered not a signal?

    JonBJ 1 Reply Last reply
    0
    • J Jakob Clausen

      Hi. I am trying to use a QToolBar to navigate through a QStackedWidget, but I cannot seem to connect the signals.
      I have

      QAction* ToolBar::addNavigationButton(QString name, QStackedWidget* workspace, int index)
      {
          QAction* action = new QAction(this);
          action->setObjectName(name);
          action->setCheckable(true);
          actionGroup.addAction(action);
          connect(action, &QAction::triggered, this, [=]() {workspace->setCurrentIndex(index);});
          return action;
      }
      

      And at the connect-line QtCreator says: QAction::triggered is not a signal (clazy-connect-non-signal).
      What am I missing. is QAction::triggered not a signal?

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #2

      @Jakob-Clausen
      This is not an error from the compiler, it's from clazy. And it's wrong, you have correct signal, it compiles. So ignore clazy!

      1 Reply Last reply
      3
      • J Offline
        J Offline
        Jakob Clausen
        wrote on last edited by
        #3

        Nothing happens when I push the button.

        JonBJ 2 Replies Last reply
        0
        • J Jakob Clausen

          Nothing happens when I push the button.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #4

          @Jakob-Clausen
          Put a qDebug() into the slot lambda?

          1 Reply Last reply
          0
          • J Offline
            J Offline
            Jakob Clausen
            wrote on last edited by
            #5

            No. Nothing happens.

            1 Reply Last reply
            0
            • J Jakob Clausen

              Nothing happens when I push the button.

              JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by JonB
              #6

              @Jakob-Clausen
              I have not used a checkable QAction. But I'm thinking it does not fire triggered(), it fires changed() instead? Because it no longer triggers an "action"? Check the docs/comment out the setCheckable(true).

              1 Reply Last reply
              0
              • J Offline
                J Offline
                Jakob Clausen
                wrote on last edited by
                #7

                If I comment out setCheckable() it gives the same result.
                I have also tried to connect changed(), and it does not work either.

                If I use a pushbutton instread, then I can make it work

                    Button* button = new Button(this, name);
                    button->setCheckable(true);
                    connect(button, &Button::pressed, this, [=]() {workspace->setCurrentIndex(index);});
                    return addWidget(button);
                

                Is this a bad way to do it?
                I guess I manually have to uncheck the previous button that was checked.

                jsulmJ 1 Reply Last reply
                0
                • J Jakob Clausen

                  If I comment out setCheckable() it gives the same result.
                  I have also tried to connect changed(), and it does not work either.

                  If I use a pushbutton instread, then I can make it work

                      Button* button = new Button(this, name);
                      button->setCheckable(true);
                      connect(button, &Button::pressed, this, [=]() {workspace->setCurrentIndex(index);});
                      return addWidget(button);
                  

                  Is this a bad way to do it?
                  I guess I manually have to uncheck the previous button that was checked.

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  @Jakob-Clausen Isn't https://doc.qt.io/qt-5/qaction.html#toggled what you're looking for?

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

                  1 Reply Last reply
                  0
                  • J Offline
                    J Offline
                    Jakob Clausen
                    wrote on last edited by
                    #9

                    Same result.

                    JonBJ KroMignonK 2 Replies Last reply
                    0
                    • J Jakob Clausen

                      Same result.

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #10

                      @Jakob-Clausen
                      Since it ought to work, and we are about to give up :), can you test it without that QActionGroup, just in case...? Else test it in a tiny, standalone.

                      1 Reply Last reply
                      0
                      • J Jakob Clausen

                        Same result.

                        KroMignonK Offline
                        KroMignonK Offline
                        KroMignon
                        wrote on last edited by KroMignon
                        #11

                        @Jakob-Clausen said in Problem connecting QAction to slot:

                        Same result.

                        Maybe a silly question, but did you add the action to a widget?
                        Extract from QAction documentation:

                        Note that an action must be added to a widget before it can be used; this is also true when the shortcut should be global (i.e., Qt::ApplicationShortcut as Qt::ShortcutContext).

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

                        J 1 Reply Last reply
                        1
                        • KroMignonK KroMignon

                          @Jakob-Clausen said in Problem connecting QAction to slot:

                          Same result.

                          Maybe a silly question, but did you add the action to a widget?
                          Extract from QAction documentation:

                          Note that an action must be added to a widget before it can be used; this is also true when the shortcut should be global (i.e., Qt::ApplicationShortcut as Qt::ShortcutContext).

                          J Offline
                          J Offline
                          Jakob Clausen
                          wrote on last edited by
                          #12

                          @KroMignon Maybe so. But that was it. If I add it, then it works. Clazy still complains, and I don't know what that means. But now its working. :-)
                          Thank you very much.

                          KroMignonK 1 Reply Last reply
                          0
                          • J Jakob Clausen

                            @KroMignon Maybe so. But that was it. If I add it, then it works. Clazy still complains, and I don't know what that means. But now its working. :-)
                            Thank you very much.

                            KroMignonK Offline
                            KroMignonK Offline
                            KroMignon
                            wrote on last edited by KroMignon
                            #13

                            @Jakob-Clausen said in Problem connecting QAction to slot:

                            Clazy still complains

                            The Clazy complain seems to be a bug in Clazy/QtCreator ==> https://bugreports.qt.io/browse/QTCREATORBUG-25165

                            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
                            2

                            • Login

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